Private-Key
電子的私鑰是 512 位還是 256 位長?
我最近一直在瀏覽電子的 python 原始碼,並在從第 130行開始的 mneumonic.py文件中遇到以下程式碼行:
def mnemonic_to_seed(self, mnemonic, passphrase): PBKDF2_ROUNDS = 2048 mnemonic = normalize_text(mnemonic) passphrase = normalize_text(passphrase) return pbkdf2.PBKDF2(mnemonic, 'electrum' + passphrase, iterations = PBKDF2_ROUNDS, macmodule = hmac, digestmodule = hashlib.sha512).read(64)
我們清楚地看到它返回一個 64 字節或 512 位的種子,而不是我們都知道的比特幣私鑰應該是 256 位。這是為生成私鑰而呼叫的最後一個函式,還是我錯過了一些步驟或函式?
這是為生成私鑰而呼叫的最後一個函式,還是我錯過了一些步驟或函式?
你錯過了很多步驟。
種子值為 512 位,因為更多位更安全,BIP 32指定應使用 128 到 512 位之間的種子值。種子值的長度無關緊要,因為無論如何它都會被散列,結果是 512 位。
BIP 32 使用 512 位,因為該值被分成兩個 256 位值。其中一個是私鑰,另一個是鏈碼。
這是為種子增加一點熵的關鍵拉伸函式。助記符通過該函式,然後其輸出通過 bip32_root() 再次通過 sha512 執行。BIP32有點需要 512 位,以便有足夠的位用於鏈碼和主私鑰。
無論如何,金銀花種子有效地是 135 位。