Javascript:从私钥生成 ECDSA 公钥

Posted

技术标签:

【中文标题】Javascript:从私钥生成 ECDSA 公钥【英文标题】:Javascript: Generating ECDSA public key from private key 【发布时间】:2018-12-17 10:33:31 【问题描述】:

是否有任何库支持从 javascript(前端)的私钥派生 ecdsa 公钥? (有了私钥,我们就可以生成对应的公钥了)

我研究了localethereum white paper,我想实现加密层。

上面写着:

AccountKeyIdentityPublic — 使用 SECP-256k1 曲线,ECDSA 公钥对应于 AccountKeyIdentityPrivate。

但是,似乎有很多库 (1, 2) 不支持此功能。

谁能给我一些建议?谢谢!

【问题讨论】:

我觉得对你有帮助github.com/kjur/jsrsasign @huynhsamha 谢谢~ 但它也无法分配私钥。也就是说,私钥是随机生成的。 generateKeyPairHex() 【参考方案1】:

您可以使用支持点乘的库来做这样的事情。 要获得您的公钥,您只需将生成点 G 乘以您的私钥。

例如使用 elliptic 包:

var EC = require('elliptic').ec;

// Create and initialize EC context
// (better do it once and reuse it)
var ec = new EC('secp256k1');

// Then generate the public point/key corresponding to your secret key.
var pubPoint = ec.keyFromSecret(secret).getPublic();

【讨论】:

是的,你的方法是对的。但我担心如果我自己编码,可能会存在一些安全问题...... 我在椭圆项目中使用 dist/elliptic.js 找到了解决方案。通过 和 var ec = new EC('secp256k1'); var pubPoint = ec.keyFromSecret(secret).getPublic();

以上是关于Javascript:从私钥生成 ECDSA 公钥的主要内容,如果未能解决你的问题,请参考以下文章

从私钥生成的公钥在 2 种情况下不同

sh 从私钥生成rsa公钥

sh 从私钥生成rsa公钥

PHP:从私钥字符串/文件中获取 RSA 公钥

Javascript ECDSA 获取私钥和​​公钥?

从 ECDSA 公钥生成比特币地址