keccak應用
在以太坊中,用keccak哈希算法來計算公鑰的256位哈希,再截取這256位哈希的后160位哈希作為地址值。
keccak和sha3的區別
sha3由keccak標准化而來,在很多場合下Keccak和SHA3是同義詞,但在2015年8月SHA3最終完成標准化時,NIST調整了填充算法:SHA3-256(M) = KECCAK [512] (M || 01, 256)。所以標准的NIST-SHA3就和keccak計算的結果不一樣。
以太坊在開發的時候sha3還在標准化中,所以采用了keccak,所以Ethereum和Solidity智能合約代碼中的SHA3是指Keccak256,而不是標准的NIST-SHA3,為了避免混淆,直接在合約代碼中寫成Keccak256是最清晰的
為何推出sha3
推出sha3不是因為sha2出現了漏洞,只是當時學術界對於sha1被成功碰撞的擔憂,但目前基於NIST的建議,sha2和sha3都是屬於可以安全商用的哈希算法,sha3相當於多了一種安全選擇,比特幣選用的就是sha2(SHA256)。