首要,让咱们先简单的说说比特币地址是怎么算出来的。比特币是建立在数学加密学基础上的,中本聪大神用了椭圆加密算法(ECDSA)来发生比特币的私钥和公钥。由私钥是能够核算出公钥的,公钥的值通过一系列数字签名运算会得到比特币地址。

需求阐明的是:因为由公钥能够算出比特币地址,所以咱们常常把公钥和比特币地址的说法相混杂,可是他们都是指的一个概念。比特币地址仅仅另一种格局的公钥。
从比特币私钥得到咱们所用的比特币地址需求九个过程。中心要用到SHA256加密、RIPEMD160加密和BASE58编码。咱们终究用到的比特币私钥和比特币地址一般都是通过BASE58编码的成果。整个流程如下图所示。
第一步,随机选取一个32字节的数、大小介于1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间,作为私钥。
18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725
第二步,运用椭圆曲线加密算法(ECDSA-secp256k1)核算私钥所对应的非紧缩公钥。 (共65字节, 1字节 0x04, 32字节为x坐标,32字节为y坐标)关于公钥紧缩、非紧缩的问题另文阐明。
0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B
23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6
第三步,核算公钥的 SHA-256 哈希值
600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
第四步,取上一步成果,核算 RIPEMD-160 哈希值
010966776006953D5567439E5E39F86A0D273BEE
第五步,取上一步成果,前面加入地址版本号(比特币主网版本号“0x00”)
00010966776006953D5567439E5E39F86A0D273BEE
第六步,取上一步成果,核算 SHA-256 哈希值
445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094
第七步,取上一步成果,再核算一下 SHA-256 哈希值(哈哈)
D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30
第八步,取上一步成果的前4个字节(8位十六进制)
D61967F6
第九步,把这4个字节加在第五步的成果后边,作为校验(这便是比特币地址的16进制形状)。
00010966776006953D5567439E5E39F86A0D273BEED61967F6
第十步,用base58表示法改换一下地址(这便是最常见的比特币地址形状)。
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
(阐明: 有些数字以"0x"最初,意思是此数字运用十六进制表示法。"0x"本身没有任何意义,它是C语言撒播下来的,约定俗成的写法,比如0xA便是十进制的10。另外,1个字节 = 8位二进制 = 2位十六进制)。
咱们常常说的比特币公钥便是指的图中第二步所发生的成果。而HASH160指的是第四步RIPEMD160签名所发生的成果,因为RIPEMD也是一种HASH算法所以就统称为HASH160了。而咱们常用的比特币地址便是通过BASE58编码后的成果。
比特币客户端和钱包也承受各种比特币地址格局,常用的格局有BASE58格局、WIF紧缩格局、130位和66位公钥(Public key)格局。进入比巴克的钱包工具点击钱包概况查询页面,如下图,红色框中130位的字符串便是比特币ECDSA算出的原始公钥,下面是公钥紧缩成66位的格局,上面两个分别是咱们常用的比特币BASE58地址格局和比特币地址WIF(wallet import format)紧缩格局。
其实现在各种格局的地址基本上都是通用的,在学习了相关常识后,咱们会对比特币体系有愈加深化的了解。
Gobittest网站(国外可访问)供给了从比特币原始私钥到公钥再到HASH160和BASE58的核算程序,读者能够参阅。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注