比特币地址和私钥是怎样生成的?
Unknown
view 85
2014-2-19 02:21
share to
Scan QR code with WeChat
比特币使用椭圆曲线算法生成公钥和私钥,选择的是secp256k1曲线。生成的公钥是33字节的大数,私钥是32字节的大数,钱包文件wallet.dat中直接保存了公钥和私钥。
我们在接收和发送比特币时用到的比特币地址是公钥经过算法处理后得到的,具体过程是公钥先经过SHA-256算法处理得到32字节的哈希结果,再经过RIPEMED算法处理后得到20字节的摘要结果,再经过字符转换过程得到我们看到的地址。
这个字符转换过程与私钥的字符转换过程完成相同,步骤是先把输入的内容(对于公钥就是20字节的摘要结果,对于私钥就是32字节的大数)增加版本号,经过连续两次SHA-256算法,取后一次哈希结果的前4字节作为校验码附在输入内容的后面,然后再经过Base58编码,得到字符串。
这里需要提一下的是Base58编码为了让输出字符串易于辨别,所以编码时故意排除了4个字符:'0'、'I'、'l'、'O',如果你想生成一个带特殊词缀的地址那就不要带这4个符了,比如我的ID(walker)也就不能生成了。
Scan QR code with WeChat