我正在尝试用JavaScript生成一对以太坊密钥。
为此,我正在测试一些ECDSA / Keccak256算法,以从私钥获取公钥。我发现的最有前途的一个(知道我想仅对私钥避免伪随机的约束)是:https://github.com/bitchan/eccrypto
我已经能够使用lib的两个功能来生成私钥和获取公钥:
np.array
但是,每当我尝试对之前不是由eccrypto立即生成的privateKey使用getPublic时,eccrypto.getPublic将无法正常工作,并且会拒绝并显示错误const privateKey2 = eccrypto.generatePrivate();
console.log(privateKey2);
const publicKey = eccrypto.getPublic(privateKey2);
console.log(publicKey);
。
最奇怪的是,即使我通过电子密码复制生成的私钥,然后尝试将其传递给Bad private key
(硬编码),也会遇到相同的错误:
eccrypto.getPublic()
这是一个非常具体的问题,但是如果有人有解决方案,那对我真的有帮助!
答案 0 :(得分:1)
我认为您只需要在传递私钥之前将其转换为Buffer
,其中就有一个isScalar
方法使用isBuffer
并且期望实际的{{1 }}对象。
您应该可以使用Buffer.from(array)
从数组中创建它。