BIP39助記詞生成簡單流程


轉載請注明:https://www.cnblogs.com/tkblack/p/12621026.html

其實,bip39之前有過一些了解,但是都沒有過深入的探索,最近具體學習下,順便記錄下:

1.首先,隨機生成一個長度為32倍數的128-256位的二進制類型,我們把它稱之為熵;

2.對這個生成的熵做sha256計算,取結果的前8位;(這里說明下,雖然取了8位,但是不一定全部用上,具體使用的位數計算:n = 熵的位數/32)

3.用熵與上一步中前n位進行拼接(熵放前),獲得一個大整型(我們一般稱這n位為校驗位);

 這里也說明下,之前我看到網上有人說是將熵以32位分割,然后每段末尾插入1個校驗位,於是我特意去找了下代碼(以下是golang的示例):

    hash := computeChecksum(data)  // 計算哈希值,data表示熵,字節數組類型
    firstChecksumByte := hash[0]

    // 計算所需插入的校驗位數
    checksumBitLength := uint(len(data) / 4)

    dataBigInt := new(big.Int).SetBytes(data)
    for i := uint(0); i < checksumBitLength; i++ {
        // 熵 * 2,即左移1位,這里不會溢出
        dataBigInt.Mul(dataBigInt, bigTwo)

        // 將第i位拼接到末尾
     if uint8(firstChecksumByte&(1<<(7-i))) > 0 {   dataBigInt.Or(dataBigInt, bigOne) } }

4.將上一步得到的大整型每11位分割,每段得到一個整數,並查找助記詞表(查看助記詞https://github.com/bitcoin/bips/tree/master/bip-0039),從而生成錢包助記詞,助記詞長度12-24,且為3的倍數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM