Address

如何生成 SECRET_KEY 前綴?

  • September 24, 2017
base58Prefixes[SECRET_KEY] =     std::vector<unsigned char>(1,176);

我需要前綴 L ,但我找不到如何做到這一點,請不要發布指向前綴列表比特幣的連結,它僅用於地址前綴。

我搜尋所有Google端發現注意。

地址和私鑰使用 Base58Check 編碼進行編碼。選擇前綴字節,以便一旦您編碼的任何內容實際使用 Base58Check 編碼進行編碼,您最終將得到一個具有預期前綴字元的字元串。

比特幣維基上描述了創建 Base58Check 編碼字元串的過程:

Base58Check 字元串由版本/應用程序字節和有效負載創建,如下所示。

  1. 獲取版本字節和有效負載字節,並將它們連接在一起(按字節)。
  2. 取 SHA256 的前四個字節(SHA256(步驟 1 的結果)) 3. 將步驟 1 的結果和步驟 2 的結果連接在一起(按字節)。
  3. 將步驟 3 的結果(一系列字節)視為單個大端大數,使用正常的數學步驟(大數除法)和下面描述的 base-58 字母表轉換為 base-58。結果應標準化為沒有任何前導 base-58 零(字元“1”)。
  4. 前導字元“1”在 base58 中的值為 0,保留用於表示整個前導零字節,因為當它處於前導位置時,沒有作為 base-58 符號的值。當需要表示一個或多個前導零字節時,可以有一個或多個前導“1”。計算步驟 3 結果的前導零字節數(對於舊的比特幣地址,版本/應用程序字節總是至少有一個;對於新地址,永遠不會有)。每個前導零字節應在最終結果中由其自己的字元“1”表示。
  5. 將步驟 5 中的 1 與步驟 4 的結果連接起來。這是 Base58Check 結果。

生成的前綴字元還取決於被編碼數據的大小。

獲取要使用的具有特定字元的前綴字節的唯一方法是猜測和檢查。您正在編碼的數據必須是固定長度的,即使是這樣,對於給定的前綴字節,您仍然可能會得到多個可能的前綴字元。

比特幣 wiki 上還提供了前綴值列表和它們為 20 字節值生成的字元

嗯,不知道你在問什麼。通常你有一個十六進製字元的私鑰。當您進行 base58 編碼時,您使用十六進制 0x80 作為前綴,這會導致在所謂的 WIF 壓縮密鑰(錢包交換格式)的開頭出現“K”或“L”。對於普通的 WIF 密鑰,它將是“5”。如果這是您正在尋找的內容,您可以閱讀(線上提供)Andreas 的“掌握比特幣”一書中的http://chimera.labs.oreilly.com/books/1234000001802/ch04.html#private_public_keys章節。

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