Bitcoin-Core

當 RIPEMD 160 和 SHA-256 分別只有 20 字節和 32 字節時,為什麼比特幣地址是 25-34 字節?

  • December 9, 2017

(我是比特幣的新手,它是技術,所以請盡可能糾正我)。最近我正在閱讀有關比特幣及其基礎技術的文章。我開始知道比特幣使用 RIPEMD-160(SHA-256) 來生成地址。但是大多數比特幣地址都是 25 到 34 字節(字元)長並且以 1 或 3 開頭。這怎麼可能?是否有任何底層加密算法以及 RIPEMD 和 SHA 等散列函式?

比特幣地址生成如下:

使用底層作業系統的偽隨機數生成函式(在錢包中)生成私鑰(k)的前 256 位。

那麼公鑰 (K) = G * k。,其中 G 在橢圓曲線上是常數。即相當於G的k次加法,結果點K在曲線上,即65字節。

該地址是通過對公鑰 (K) 執行 SHA256 和 RIPEMD160 來計算的。所以這將是 160 位 = 20 字節的地址。

現在,添加版本前綴 00(十六進制)。對其執行兩次 SHA256。獲取前 4 個字節的結果並將其附加到(前綴 || 地址)。

結果將是最終地址。

在這裡您可以找到如何生成比特幣地址的分步說明:https ://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses

簡短回答:比特幣地址 <version_byte><20 bytes of RIPEMD-160(SHA-256(PublicKey))><4 bytes checksum>總共包含 = 25 個字節

校驗和只是先前數據的 SHA(SHA()) 的前 4 個字節

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