SHA算法(Secure Hash Algorithm)
类似于md5算法,SHA算法也是一种摘要算法
。
SHA算法版本
SHA算法主要分为SHA-0、SHA-1、SHA-2、SHA-3。
SHA-0
发布不久就被发现存在安全隐患,可忽略。
SHA-1
可以生成160bit的信息摘要,比md5算法的128bit多出来的32bit,可以使不同明文的碰撞几率降低2^32倍。但其实很早就有了破解SHA-1算法的办法,目前的主流是SHA-2各版本。
SHA-2
可以认为是SHA-1的升级版。是一系列SHA算法变体的总称:
- SHA-256:可以生成256bit的信息摘要;
- SHA-224:是SHA-256的阉割版,可生成224bit的信息摘要;
- SHA-512:可以生成512bit的信息摘要;
- SHA-384:是SHA-512的阉割版,可生成384bit的信息摘要;
生成的信息摘要越长,发生碰撞的几率就越小,破解的难度就越大。但耗费的性能和占用的空间就越高。
SHA-1和SHA-2算法与md5算法的生成过程类似,但更复杂一些。比如SHA-512的每一段摘要分成了A~H八段,每段长度为64bit。
SHA-3
2012年Keccak算法被宣发成为SHA-3算法。SHA-3算法与SHA-1和SHA-2不同,使用全新的算法引擎。
jdk9中加进了SHA-3算法。