ugChain技术团队以太坊实践笔记

以太坊环境下SHA3与Keccak256的区别

2018-03-24  本文已影响125人  Buffalo_Lv

 

SHA3采用Keccak算法,在很多场合下Keccak和SHA3是同义词,但在2015年8月SHA3最终完成标准化时,NIST调整了填充算法,标准的SHA3和原先的Keccak算法就有所区别了。在早期的Ethereum相关代码中,普遍使用SHA3代指Keccak256,为了避免和NIST标准的SHA3混淆,现在的代码直接使用Keccak256作为函数名。

总结为一句话:Ethereum和Solidity智能合约代码中的SHA3是指Keccak256,而不是标准的NIST-SHA3,为了避免混淆,直接在合约代码中写成Keccak256是最清晰的。

参考:

https://github.com/ethereum/EIPs/issues/59

http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use

http://emn178.github.io/online-tools/sha3_256.html

https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf

上一篇下一篇

猜你喜欢

热点阅读