Bitcoin 地址原理(3)公钥地址到比特币地址
1. 得到公鑰
生成了私鑰之后,我們使用橢圓曲線加密算法(ECDSA-secp256k1)計算私鑰所對應(yīng)的非壓縮公鑰,生成的公鑰共65字節(jié), 其中一個字節(jié)是0x04,其中32個字節(jié)是X坐標,另外32個字節(jié)是Y坐標:
公鑰P.X:06CCAE7536386DA2C5ADD428B099C7658814CA837F94FADE365D0EC6B1519385
公鑰P.Y:FF83EC5F2C0C8F016A32134589F7B9E97ACBFEFD2EF12A91FA622B38A1449EEB
上述公鑰地址拼合,得到標準地址(130*4bit=65字節(jié))
0406CCAE7536386DA2C5ADD428B099C7658814CA837F94FADE365D0EC6B1519385FF83EC5F2C0C8F016A32134589F7B9E97ACBFEFD2EF12A91FA622B38A1449EEB
2. 公鑰的SHA-256哈希值
對齊進行SHA-256哈希計算,得到結(jié)果(64*4bit=32字節(jié)):2572e5f4a8e77ddf5bb35b9e61c61f66455a4a24bcfd6cb190a8e8ff48fc097d
3. 計算 RIPEMD-160哈希值(40*4bit=40個16進制數(shù) = 20字節(jié))
取上一步結(jié)果,進行RIPEMD-160計算,得到結(jié)果:0b14f003d63ab31aef5fedde2b504699547dd1f6
4. 加入地址版本號(比特幣主網(wǎng)版本號“0x00”)(21個字節(jié))
取上一步結(jié)果,在前面加上16進制的00,即:00 0b14f003d63ab31aef5fedde2b504699547dd1f6
5. 計算 SHA-256 哈希值 取上一步結(jié)果,進行SHA-256計算,可得:(64*4bit=32字節(jié))
ddc2270f93cc84cc6869dd373f3c340bbf5cb9a8f5559297cc9e5d947aab2536 然后,對以上結(jié)果再次計算 SHA-256 哈希值,得到:
869ac57b83ccf75ca9da8895823562fffb611e3c297d9c2d4612aeeb32850078
6. 取上一步結(jié)果的前4個字節(jié)
869ac57b
7. 把這4個字節(jié)加在第五步的結(jié)果后面 作為校驗位(50*4bit= 25字節(jié))
將這4個字節(jié)加載第五步的結(jié)果后面,這就是比特幣地址的16進制形態(tài)了:
000b14f003d63ab31aef5fedde2b504699547dd1f6869ac57b
8. 用Base58編碼變換一下地址(17字節(jié))
對上一步的結(jié)果進行Base58編碼,得到
1QCXRuoxWo5Bya9NxHaVBArBQYhatHJrU7
總結(jié)
以上是生活随笔為你收集整理的Bitcoin 地址原理(3)公钥地址到比特币地址的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bitcoin 地址原理(1)Base5
- 下一篇: 跨链(1)综述