華文網

「區塊鏈百科」比特幣使用的SHA

SHA(Secure Hash Algorithm),中文名為安全散列演算法,是美國國家安全局 (NSA) 設計,美國國家標準與技術研究院(NIST) 發佈的一系列密碼散列函數,包括 SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512 等變體。主要適用於數位簽章標準(DigitalSignature Standard DSS)裡面定義的數位簽章演算法(Digital Signature Algorithm DSA)。

而比特幣開發使用橢圓曲線演算法生成公開金鑰和私密金鑰,選擇的是SHA-256。

安全散列演算法生成的公開金鑰是33位元組的大數,私密金鑰是32位元組的大數,錢包文件wallet.dat中直接保存了公開金鑰和私密金鑰。我們在接收和發送比特幣時用到的比特幣位址是公開金鑰經過演算法處理後得到的,

具體過程是公開金鑰先經過安全散列演算法演算法處理得到32位元組的雜湊結果,再經過RIPEMED演算法處理後得到20位元組的摘要結果,再經過字元轉換過程得到我們看到的位址。這個字元轉換過程與私密金鑰的字元轉換過程完成相同,步驟是先把輸入的內容(對於公開金鑰就是20位元組的摘要結果,對於私密金鑰就是32位元組的大數)增加版本號,
經過連續兩次安全散列演算法演算法,取後一次雜湊結果的前4位元組作為校驗碼附在輸入內容的後面,然後再經過Base58編碼,得到字串。