0

我正在使用 scep256k1 曲线生成新的以太坊地址。由于存储和硬件限制,我只能存储私钥。我正在寻找在浏览器中为非对称加密(不是以太坊公共地址)生成公钥的方法。

据我了解,公钥可以从 scep256k1 私钥派生,但我不确定如何在浏览器中执行此操作,或者是否可以使用现有库,但我有预感它是. 我目前正在尝试查看是否可以使用 Web3js、SJCL 或 CryptoJS,但我对其他选项持开放态度。

在这里提供一些对流程的理解。第 3 步是我目前正在尝试做的事情:

  1. 使用 openSSL 生成 scep256k1 密钥对
  2. 将私钥上传到硬件设备并将其提供给用户
  3. Web 界面中的用户:使用来自硬件的私钥来访问他们的公钥,并重建以太坊地址。

任何指向正确方向的指针表示赞赏!

4

1 回答 1

0

是的,这是微不足道的。

您只需要使用私钥字节数组(实际上是一个256-bit标量),并将其乘以secp256k1曲线生成器点g,该点本身就是曲线上生成曲线循环组的点。

ETH地址独立于底层secp256k1公钥,它本身在物理上是曲线上的一个点。

您正在寻找的方法调用是曲线标量乘法。

生成器是:

Gx = 
0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798

Gy = 
0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8

只需将此点添加到自身n次,n私钥顺序在哪里。即私钥g*k在哪里k,瞧,您已经导出了公钥。

于 2020-04-04T19:10:12.360 回答