1. 程式人生 > >比特幣錢包匯入格式

比特幣錢包匯入格式

私鑰到WIF

1 - 拿一把私鑰

   0C28FCA386C7A227600B2FE50B7CAE _SAMPLE_PRIVATE_KEY_DO_NOT_IMPORT_ 11EC86D3BF1FBE471BE89827E19D72AA1D

2 - 在主網地址前面新增一個0x80位元組,在testnet地址上新增0xef。如果私鑰對應於壓縮的公鑰,則在末尾新增0x01位元組

   800C28FCA386C7A227600B2FE50B7C _SAMPLE_PRIVATE_KEY_DO_NOT_IMPORT_ AE11EC86D3BF1FBE471BE89827E19D72AA1D

3 - 對擴充套件金鑰執行SHA-256雜湊

   8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592

4 - 對SHA-256雜湊的結果執行SHA-256雜湊

   507A5B8DFED0FC6FE8801743720CEDEC06AA5C6FCA72B07C49964492FB98A714

5 - 取第二個SHA-256雜湊的前4個位元組,這是校驗和

   507A5B8D

6 - 從第2點的擴充套件金鑰末尾的第5點新增4個校驗和位元組

   800C28FCA386C7A227600B2FE50B7CAE11EC8 _SAMPLE_PRIVATE_KEY_DO_NOT_IMPORT_ 6D3BF1FBE471BE89827E19D72AA1D507A5B8D

7 - 使用Base58Check編碼將結果從位元組字串轉換為base58字串。這是電子錢包匯入格式

   5HueCGU8rMjxEXxiPuD5BDk _SAMPLE_PRIVATE_KEY_DO_NOT_IMPORT_ u4MkFqeZyd4dZ1jvhTVqvbTLvyTJ

WIF到私鑰

1 - 獲取電子錢包匯入格式字串

   5HueCGU8rMjxEXxiPuD5BDk _SAMPLE_PRIVATE_KEY_DO_NOT_IMPORT_ u4MkFqeZyd4dZ1jvhTVqvbTLvyTJ
   800C28FCA386C7A227600B2FE50B7CAE11EC _SAMPLE_PRIVATE_KEY_DO_NOT_IMPORT_ 86D3BF1FBE471BE89827E19D72AA1D507A5B8D

3 - 從位元組字串中刪除最後4個校驗和位元組

   800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D

4 - 丟棄第一個位元組(應該是0x80)。如果私鑰對應於壓縮的公鑰,也丟棄最後一個位元組(它應該是0x01)。如果它對應於壓縮的公鑰,則WIF字串將以K或L而不是5(或者在testnet上為c而不是9)開始。這是私鑰。

   0C28FCA386C7A227600B2FE50B7CAE1 _SAMPLE_PRIVATE_KEY_DO_NOT_IMPORT_ 1EC86D3BF1FBE471BE89827E19D72AA1D

WIF校驗和檢查

1 - 獲取電子錢包匯入格式字串

   5HueCGU8rMjxEXxiPuD5BD _SAMPLE_PRIVATE_KEY_DO_NOT_IMPORT_ ku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ
   800C28FCA386C7A227600B2FE50B7CAE11E _SAMPLE_PRIVATE_KEY_DO_NOT_IMPORT_ C86D3BF1FBE471BE89827E19D72AA1D507A5B8D

3 - 從位元組字串中刪除最後4個校驗和位元組

   800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D

3 - 對縮短的字串執行SHA-256雜湊

   8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592

4 - 對SHA-256雜湊的結果執行SHA-256雜湊

   507A5B8DFED0FC6FE8801743720CEDEC06AA5C6FCA72B07C49964492FB98A714

5 - 取第二個SHA-256雜湊的前4個位元組,這是校驗和

   507A5B8D

6 - 確保它與第2點的最後4個位元組相同

   507A5B8D

7 - 如果是,並且第2點的位元組字串以0x80(testnet地址為0xef)開頭,則沒有錯誤。