思考:
SHA-1、SHA-2、SHA-3的区别是什么?
sha怎么读的?
SHA-1、sha1有什么区别?
SHA-512/224和SHA-512/256又是什么?
什么场景下,才会使用SHA-3?
SHAKE128和SHAKE256是什么?
安全散列演算法(Secure Hash Algorithm,缩写为SHA)是一个密码杂凑函数家族,是FIPS所认证的安全杂凑演算法。能计算出一个数位讯息所对应到的,长度固定的字串(又称讯息摘要)的算法。且若输入的讯息不同,它们对应到不同字串的机率很高。
SHA家族的演算法,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布,是美国的政府标准,其分别是:
- SHA-0:1993年发布,当时称做安全散列标准(Secure Hash Standard),发布之后很快就被NSA撤回,是SHA-1的前身。
- SHA-1:1995年发布,SHA-1在许多安全协定中广为使用,包括TLS、GnuPG、SSH、S/MIME和IPsec,是MD5的后继者。但SHA-1的安全性在2010年以后已经不被大多数的加密场景所接受。 2017年荷兰密码学研究小组CWI和Google正式宣布攻破了SHA-1[1]。
- SHA-2:2001年发布,包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。 SHA-2目前没有出现明显的弱点。虽然至今尚未出现对SHA-2有效的攻击,但它的演算法跟SHA-1基本上仍然相似。
- SHA-3:2015年正式发布,由于对MD5出现成功的破解,以及对SHA-0和SHA-1出现理论上破解的方法,NIST感觉需要一个与之前演算法不同的,可替换的加密杂凑演算法,也就是现在的SHA-3。
算法 | 变体 | 输出长度(bit) |
---|---|---|
MD5 | 128 | |
SHA-0 | 160 | |
SHA-1 | 160 | |
SHA-2 | SHA-224 SHA-256 SHA-384 SHA-512 | 224 256 384 512 |
SHA-3 | SHA-224 SHA-256 SHA-384 SHA-512 SHA-512/224 SHA-512/256 | 224 256 384 512 224 256 |
SHA-3示例:
SHA3-224("")
6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7
SHA3-256("")
a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a
SHA3-384("")
0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004
SHA3-512("")
a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26
SHAKE128("", 256)
7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26
SHAKE256("", 512)
46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be