初識比特幣——比特幣私鑰
阿新 • • 發佈:2018-07-16
mkf 使用 結果 hash 一個 進制 ring ber 通行證
2. 在1結果前面增加網絡標示,0x80表示mainnet網絡,0xef表示測試網絡(testnet)
3. 如果使用壓縮公鑰,在2的結果後面增加0x01;若使用非壓縮公鑰,則不追加0x01
(本次不使用壓縮公鑰)
4. 對3的結果執行SHA-56hash算法
5. 對4的結果再次執行SHA-256 hash算法
6. 取5結果的前4個字節,作為校驗和
7. 將6的結果追加到3的後面
8. 對6的結果執行Base58Check 編碼算法,得到WIF格式的私鑰
由上面的步驟可以看到,WIF格式的私鑰很容易轉換成256位的符合ECDSA規範的私鑰;而且很容易校驗WIF格式的私鑰是否合法。
私鑰
私鑰是用戶在比特幣網絡的通行證,它用來花費bitcoins,具體來說就是在交易時對交易腳本進行簽名。它一個256bit的隨機數,一般隨機生成,範圍在0x1到0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140之間(這是由ECDSA spec256k1算法限定的)。
比如下面的隨機數就是一個合法的比特幣私鑰
0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
- 1
WIF格式
為使復制比特幣私鑰不容易出錯,通常使用WIF(Wallet Import Format)格式的私鑰。下面介紹這種格式私鑰的生成算法。
1. 隨機生成一個256bit的數,用16進制表示如下
0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
2. 在1結果前面增加網絡標示,0x80表示mainnet網絡,0xef表示測試網絡(testnet)
800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
3. 如果使用壓縮公鑰,在2的結果後面增加0x01;若使用非壓縮公鑰,則不追加0x01
(本次不使用壓縮公鑰)
800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
4. 對3的結果執行SHA-56hash算法
8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592
5. 對4的結果再次執行SHA-256 hash算法
507A5B8DFED0FC6FE8801743720CEDEC06AA5C6FCA72B07C49964492FB98A714
6. 取5結果的前4個字節,作為校驗和
507A5B8D
7. 將6的結果追加到3的後面
800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D507A5B8D
8. 對6的結果執行Base58Check 編碼算法,得到WIF格式的私鑰
5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ
由上面的步驟可以看到,WIF格式的私鑰很容易轉換成256位的符合ECDSA規範的私鑰;而且很容易校驗WIF格式的私鑰是否合法。
初識比特幣——比特幣私鑰