Mnemonic-Seed

查找 Bip39 校驗和的虛擬碼?

  • November 1, 2020

我正在嘗試查找 12 字 BIP39 的校驗和。

我可以很好地找到前 11 個單詞,但我的第 12 個單詞總是偏離幾個位置。

例如,以 128 位熵為例e84eaa26330ccbb2f866a1dc155e94ba

在二進制中是11101000010011101010101000100110001100110000110011001011101100101111100001100110101000011101110000010101010111101001010010111010.

前 11 個 11 位字是:

11101000010 (bin) => 1858 (decimal) => tribe
01110101010 (bin) => 938  (decimal) => inspire
10001001100 (bin) => 1100 (decimal) => maze
01100110000 (bin) => 816  (decimal) => gravity
11001100101 (bin) => 1637 (decimal) => smile
11011001011 (bin) => 1739 (decimal) => sunny
11100001100 (bin) => 1804 (decimal) => thunder
11010100001 (bin) => 1697 (decimal) => stage
11011100000 (bin) => 1760 (decimal) => swing
10101010111 (bin) => 1367 (decimal) => priority
10100101001 (bin) => 1321 (decimal) => pioneer

還有 7 個未使用的位,最後一個:0111010.

十六進製字元串的 SHA-256 雜湊是5355d54a3d673c4b1ac20b839ead09af3c6fea6dc24199b477f6ff64e7a68262. 其中的前 4 位由第一個十六進製字元 表示,5在二進制中是0101.

我將這 4 個字節附加到我的二進製字元串中: 111010000100111010101010001001100011001100001100110010111011001011111000011001101010000111011100000101010101111010010100101110100101

現在我有了最後一個 11 位字:

01110100101 (bin) => 933 (decimal) => input

但是,當我嘗試針對Ian Coleman 的 Bip39進行驗證時,我看到校驗和應該是0011(not 0101),這將使最後一個詞成為

01110100011 (bin) => 931 (decimal) => inner

我究竟做錯了什麼?

十六進製字元串的 SHA-256 雜湊為 5355d54a3d673c4b1ac20b839ead09af3c6fea6dc24199b477f6ff64e7a68262。其中的前 4 位由第一個十六進製字元 5 表示,二進制為 0101。

您需要獲取原始二進製文件的 shasum,而不是十六進製字元串:

$ echo "11101000010011101010101000100110001100110000110011001011101100101111100001100110101000011101110000010101010111101001010010111010" | shasum -a 256 -b

給出輸出

3043b02ceb37bb00ab48c91f76bb23d487e1ec822c90e1575967e8838a655f7c *-

將此十六進製字元串轉換為二進制時,我們得到:

0011000001000011101100000010110011101011001101111011101100000000101010110100100011001001000111110111011010111011001000111101010010000111111000011110110010000010001011001001000011100001010101110101100101100111111010001000001110001010011001010101111101111100

該字元串的前四位是0011,與 Ian Coleman 工具給出的輸出一致。

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