Blockchain

私鑰和地址

  • August 15, 2017

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字元串)。

  1. 橢圓曲線點乘法
  2. SHA256,成熟MD160
  3. 十六進制轉換為 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 字節長),那麼從哪個生成比特幣地址?–> 是的

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