私鑰, 公鑰 與 地址
私鑰:
私鑰本質上是一個隨機數,由32個byte組成的數組,1個byte等於8位二進制,一個二進制只有兩個值0或者1
公鑰:
公鑰是由私鑰通過橢圓曲線加密算法(ECDSA)生成的,一個私鑰經過橢圓曲線變換之後能夠得到公鑰,公鑰是由65個byte組成的數組(未壓縮)
地址:
地址是由公鑰變換得到, 通常包含的信息: 類型, 公鑰映射, 檢驗位, bash58
公鑰的作用:
對於私鑰,公鑰和地址來說,公鑰作爲私鑰到地址的中間橋樑,他在交易的驗證是最關鍵的:
- 公鑰生成地址,驗證發送交易的地址是否和該公鑰生成的地址一致
- 公鑰驗證私鑰的簽名,用來驗證該交易是否使用了正確的私鑰簽名
- 私鑰生成公鑰是成對出現,公鑰可以生成對應的唯一地址,這樣就能確認了該地址發送的交易是否使用了對應的私鑰
私鑰, 公鑰 與 地址
哈希算法 | 私鑰編碼 (長度不算0x) |
從私鑰生成公鑰 | 從公鑰生成地址 | |
---|---|---|---|---|
BTC | SHA2-SHA256 | WIF格式 Base58並壓縮 字符串長度52 |
ECDSA-secp256k1 未壓縮: 前綴 04 +x座標+y座標壓縮: 前綴 03 +x(如果y是奇數),前綴02 +x(如果y是偶數) |
Base58+ RipeMD160(SHA256(PubK)) |
ETH | SHA3-Keccack | 16進製表示, 字符串長度64 |
字符串長度40(不算0x) | 公鑰前加上0x |
EOS | SHA2-SHA256 | WIF格式,Base58, 字符串長度51 |
ECDSA-secp256k1|r1 EOS開頭,字符串長度53 未壓縮: 前綴 04 +x座標+y座標壓縮: 前綴 03 +x(如果y是奇數),前綴02 +x(如果y是偶數) |
1. 根據原始的私鑰生成壓縮版的公鑰 2. 對第1步的結果ripemd160運算 3. 對第2步的結果取前面四位作爲校驗和 4. 將前綴 EOS 和 第2步和第3步的結果拼接在一起就得到了地址 |