将 ECDSA 十六进制私钥转换为公钥
Posted
技术标签:
【中文标题】将 ECDSA 十六进制私钥转换为公钥【英文标题】:Convert ECDSA private hex key to public key 【发布时间】:2013-11-20 02:22:42 【问题描述】:我正在使用以下两行来生成 ECDSA 私钥的十六进制:
openssl ecparam -genkey -name secp256k1 -out data.pem
openssl ec -in data.pem -outform DER|tail -c +8|head -c 32|xxd -p -c 32
那些输出是这样的:
059f2c8f5b1978bcc02d4b41e75c3aae99f3194fb06b53ffd256178e1367a2a6
然后如何使用该十六进制密钥生成公共 ECDSA 密钥,类似这样?
043d6fa62769c10ceb28d3c13ae1e2329888e99d9c8bf854cc5bdcea0b7cd3002a0f5d244e35eec297c8eb4098b75295328cdeebe7e39a5ac7539f0fc146fa3c99
感谢任何帮助。
【问题讨论】:
你为什么要给你的钥匙一个名字data
?你不觉得这是不必要的混乱吗?
【参考方案1】:
试试这个
openssl ec -in data.pem -pubout -out pubkey.pem
【讨论】:
【参考方案2】:您可以获取从
获得的私钥的最后 65 个字节openssl ecparam -genkey -name secp256k1 -out data.pem
openssl ec -in data.pem -outform DER
这也是你的公钥。
【讨论】:
还有你的私钥。想象一下将其发送给某人。好的,您描述了占用 65 个字节,这仅对特定的曲线大小有效(从未提及),并且您的代码实际上也没有实现它。结果是只是公钥点,大多数实现不接受,并且缺少参数。以上是关于将 ECDSA 十六进制私钥转换为公钥的主要内容,如果未能解决你的问题,请参考以下文章