如果我只有现有的私钥,则在浏览器中生成 public 密钥
Generate public key in browser if I only have the existing private key
我正在使用 scep256k1 曲线生成新的以太坊地址。由于存储和硬件限制,我只能存储私钥。我正在寻找在浏览器中为非对称加密(不是以太坊 public 地址)生成 public 密钥的方法。
据我了解,public 密钥可以从 scep256k1 私钥派生出来,但我不确定如何在浏览器中执行此操作,或者这是否可以通过现有库实现,但我有预感它是。我目前正在尝试查看是否可以使用 Web3js、SJCL 或 CryptoJS,但我对其他选项持开放态度。
提供对此处流程的一些理解。第 3 步是我目前正在尝试做的事情:
- 使用 openSSL 生成 scep256k1 密钥对
- 将私钥上传到硬件设备并将其提供给用户
- Web 界面中的用户:使用硬件私钥访问其 public 密钥,并重建以太坊地址。
如有任何正确方向的指点,我们将不胜感激!
是的,这很简单。
您只需使用私钥字节数组(实际上是一个 256-bit
标量),然后将其乘以 secp256k1
曲线生成点 g
,它本身就是一个生成曲线循环群的曲线上的点。
ETH
地址独立于基础 secp256k1
public 密钥,它本身就是曲线上的一个点。
您要查找的方法调用是曲线标量乘法。
生成器是:
Gx =
0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
Gy =
0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8
只需将此点与自身相加n
次,其中n
为私钥顺序。即 g*k
其中 k
是私钥,瞧,你已经导出了 public 密钥。
我正在使用 scep256k1 曲线生成新的以太坊地址。由于存储和硬件限制,我只能存储私钥。我正在寻找在浏览器中为非对称加密(不是以太坊 public 地址)生成 public 密钥的方法。
据我了解,public 密钥可以从 scep256k1 私钥派生出来,但我不确定如何在浏览器中执行此操作,或者这是否可以通过现有库实现,但我有预感它是。我目前正在尝试查看是否可以使用 Web3js、SJCL 或 CryptoJS,但我对其他选项持开放态度。
提供对此处流程的一些理解。第 3 步是我目前正在尝试做的事情:
- 使用 openSSL 生成 scep256k1 密钥对
- 将私钥上传到硬件设备并将其提供给用户
- Web 界面中的用户:使用硬件私钥访问其 public 密钥,并重建以太坊地址。
如有任何正确方向的指点,我们将不胜感激!
是的,这很简单。
您只需使用私钥字节数组(实际上是一个 256-bit
标量),然后将其乘以 secp256k1
曲线生成点 g
,它本身就是一个生成曲线循环群的曲线上的点。
ETH
地址独立于基础 secp256k1
public 密钥,它本身就是曲线上的一个点。
您要查找的方法调用是曲线标量乘法。
生成器是:
Gx =
0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
Gy =
0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8
只需将此点与自身相加n
次,其中n
为私钥顺序。即 g*k
其中 k
是私钥,瞧,你已经导出了 public 密钥。