Private-Key

如何解壓縮壓縮的私鑰?

  • April 14, 2020

所以我有一個壓縮的私鑰。是否有可能獲得它的未壓縮版本?如果是,如何?Javascript 中的範例將不勝感激。

好的,我回答了我自己的問題。來自:https ://github.com/pointbiz/bitaddress.org/blob/master/src/bitcoinjs-lib.eckey.js#L186-L222

bytes = Bitcoin.Base58.decode(compressed_or_uncompressed_private_key);

經過一些處理後,可以將此字節數組重新編碼為壓縮或未壓縮的私鑰。

我知道這是一個舊文章。但根據文件(<https://en.bitcoin.it/wiki/Wallet_import_format>)

如果私鑰對應於壓縮的公鑰,則在末尾添加一個 0x01 字節壓縮的私鑰應該在末尾有一個 01 標誌…如果它對應於壓縮的公鑰,則 WIF 字元串將以 K 開頭或 L 而不是 5(或 c 而不是 testnet 上的 9)。

從網站上的範例中獲取密鑰

5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ

密鑰應通過使用 Base58 對密鑰進行解碼來導出,刪除與校驗和對應的最後 4 個字節(8 個字元)。

800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d 507a5b8d

對於壓縮版本,在末尾添加一個 01 字節

800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d 01

並重新導出校驗和的雙 SHA256 雜湊。使用 Python ( <http://www.herongyang.com/Bitcoin/Block-Data-Calculate-Double-SHA256-with-Python.html> ) 或 ( <https://learnmeabitcoin.com/guide/checksum> ) 結果是:

a62019d2 0340a1de1b5f254f07f2f6c96ad5165218459ab4f3c8f5a7c0e12183

從雜湊 ( a62019d2 ) 中取出前 4 個字節,並將其添加到 01 字節之後的密鑰中。

800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d507a5b8d01 a62019d2

在 Base58 中編碼結果,你應該有壓縮的密鑰。

KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617

請注意,密鑰以 K 開頭。我無法確認網際網路上發布的任何其他資訊。

引用自:https://bitcoin.stackexchange.com/questions/17232