Wallet-Import-Format

WIF 格式和儲存私鑰

  • March 13, 2015

我正在編寫一個 Android 應用程序,它將在 SQLite 數據庫中儲存比特幣和一些山寨幣的私鑰。為了儲存我的私鑰,我最初使用的是 WIF。然而,當我將它們從數據庫中取出時,我只是將它們通過 Base58 解碼為 32 字節的私鑰。使用 Base58 格式將密鑰儲存在 WIF 中與基本十六進制編碼(0x12 到“12”)相比有什麼真正的優勢嗎?我知道 WIF 對於人類轉位很有用,但我特別想知道這裡的儲存。

到目前為止,我想出的是 Base58 格式:

  1. 佔用空間略小
  2. 告訴我地址用於什麼硬幣類型
  3. 有錯誤檢查
  4. 告訴私鑰是用於壓縮地址還是解壓縮地址。

然而,第 2-4 項是我可以從我的 SQLite 數據庫中的其他條目中獲得的東西,因此它們並不重要。**Bitcoin-QT 客戶端如何儲存它的私鑰?**我知道當它將它們轉儲給使用者時,它會在 WIF 中提供它們,但我想知道它在內部做了什麼來將密鑰保存在機器上,以及我是否應該以同樣的方式進行操作。

比特幣核心客戶端通常以 DER 編碼格式儲存私鑰,每個密鑰 279 字節,以與舊版本兼容。不過,沒有充分的理由。對於更現代的加密錢包,僅使用(加密的)32 字節秘密加上完整的公鑰來儲存密鑰。壓縮是從對應公鑰的長度推導出來的,所以不需要單獨儲存。

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