为何无效私钥可通过ethereum.utils.privtoaddr生成有效地址?
为什么“无效”私钥能生成以太坊有效地址?
- 以太坊依赖secp256k1椭圆曲线生成密钥对,私钥的有效范围是 1 ≤ k ≤ N-1,其中N是该曲线的阶,具体值为
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141。 - 你输入的私钥
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364144,实际等于 N + 3。包括ethercheck脚本在内的大多数椭圆曲线工具,会自动对超出范围的私钥执行模N运算,将其映射到有效区间内。 - 你的私钥模N后结果为
3,这是完全符合规则的有效私钥。 - 你得到的地址
0x6813eb9362372eef6200f3b1dbc3f819671cba69,正是私钥3对应的以太坊地址——验证一下就能发现:用私钥3生成公钥后,对其做Keccak-256哈希并取最后20字节,得到的就是这个地址。 - 简单说:你输入的私钥只是超出了标准范围,并非真的无效,经过模N转换后变成了有效私钥,因此能生成合法地址。
内容的提问来源于stack exchange,提问作者Testdev01
相关产品推荐
相关产品推荐

