我正在使用scep256k1曲线生成新的以太坊地址。由于存储和硬件限制,我只能存储私钥。我正在寻找在浏览器中生成用于非对称加密(不是以太坊公共地址)的公共密钥的方法。
据我了解,公钥可以从scep256k1私钥派生,但是我不确定如何在浏览器中执行此操作,或者不确定是否可以使用现有库来实现,但是我有一个直觉这是。我目前正在尝试查看是否可以使用Web3js,SJCL或CryptoJS,但对其他选项持开放态度。
提供一些对这里流程的理解。第3步是我目前正在尝试做的事情:
任何朝着正确方向的指针都值得赞赏!
答案 0 :(得分:0)
是的,这很简单。
您只需要使用私钥字节数组(实际上是一个256-bit
标量),然后将其乘以secp256k1
曲线生成器点g
,它本身就是一个点生成曲线循环组的曲线。
ETH
地址是从基础secp256k1
公钥中独立获得的,该公钥本身实际上是曲线上的一个点。
您要查找的方法调用是曲线标量乘法。
生成器是:
Gx =
0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
Gy =
0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8
只需将此点自身添加n
次,其中n
是私钥顺序。即g*k
,其中k
是私钥,瞧,您已经导出了公钥。