私鑰和地址
Private key
是 32 字節的數字。
Address (Hash)
是 20 字節的數字。確實有許多
Private keys
具有相同的 20 字節散列嗎?PS如何
Address
獲得Private key
:
Private key
(32字節數字,隨機)–1–>04
+Public key
(64字節數字,橢圓曲線點)–2–>Hash, Address
(20字節數字)–3–>Address
字元串(Base58字元串)。
- 橢圓曲線點乘法
- SHA256,成熟MD160
- 十六進制轉換為 Base58
是的,這是真的。
然而,從一個地址到任何對應的私鑰仍然需要大量的計算,這是不可行的。
嗯,有點混亂,也許我可以添加一些澄清,這也有助於其他讀者。32b 數字或 20b 數字似乎不是準確的描述。字節縮寫為大寫“B”,位縮寫為小寫“b”(IEC 80000-13、IEEE 1541)。32b 的私鑰是 4 字節,這有點太短了 :-)
比特幣私鑰是 32 字節(這是一個 256 位數字)。比特幣地址是 26-34 個字元的字元串,更“人類可讀”。它通過以下方式從私鑰派生而來:
privkey –> 公鑰 –> sha256 –> ridemd160(這裡我們實際上有 20 個字節) –> + 網路字節 –> 雙 sha256 –> +chksum –> +Bytes 重新排序 –> base58 編碼。這讀起來比實際複雜,這裡有一個很好的概述:
http://gobittest.appspot.com/Address
所以你的最後一個問題有點棘手:
確實有許多私鑰具有相同的 20b 雜湊(地址)嗎?
一般來說,散列的想法是,你在函式中輸入一個字元串,它會返回一個固定長度的輸出。如果您更改此字元串中的單個位,則返回的結果完全不同。正如彼得所說,從輸出到輸入幾乎是不可能的。所以如果你問:
- 如果您可以從不同的私鑰生成相同的地址(或公鑰)?–> 沒有(直到今天,還沒有證據證明,但有項目正在尋找“碰撞”的路上)
- 如果所有私鑰都生成相同長度的(比特幣)地址?–> 不,地址的長度為 26-34 字節。
- 如果所有 priv 密鑰生成相同長度的 pubkeys(並且散列 20 字節長),那麼從哪個生成比特幣地址?–> 是的