SHA (Security Hash Algorithm) 是美国的 NIST 和 NSA 设计的一种标准的 Hash 算法,SHA 用于数字签名的标准算法的 DSS 中,也是安全性很高的一种 Hash 算法。算法
1)SHA-1
SHA-1 算法的输入消息长度小于 264bit,最终输出的结果值是 160 Bits,SHA-1 与 MD4 相比较而言,主要增长了扩展变换,将前一轮的输出也加到了下一轮,这样增长了雪崩效应,并且因为其 160 Bits 的输出,对穷举***更具备抵抗性。
大体实现过程:将消息摘要转换成位字符串,对转换后的位字符串进行补位操做,附加长度值而且初始化缓存,而后计算消息摘要。缓存
2)SHA-256 算法
SHA-256 算法输入报文的最大长度不超过 264 Bits,输入按 512 Bits 分组进行处理,产生的输出是一个 256 Bits 的报文摘要。安全
算法处理步骤:ide
一、附加填充位
对报文进行填充使报文长度与 448 模 512 同余(长度 = 448 mod 512), 填充的比特数范围是 1 到 512,填充比特串的最高位为 1,其他位为 0。 就是先在报文后面加一个 1,再加不少个 0,直到长度知足 mod 512=448。为何是 448?由于 448+64=512。第二步会加上一个 64 位的原始报文的长度信息。函数
二、附加长度值
将用 64 位表示的初始报文(填充前)的位长度附加在步骤 1 的结果后(低位字节优先)。学习
4.处理 512 位报文分组序列
该算法使用了六种基本逻辑函数,由 64 步迭代运算组成。每步都以 256 位缓存值 ABCDEFGH 为输入,而后更新缓存内容。每步使用一个 32 位常数值 Kt 和一个 32 位 Wt。加密
3)SHA-2的其余衍生算法
包括SHA-22四、SHA-25六、SHA-38四、SHA-512,这些版本共同构成了SHA你们庭。
SHA-224:SHA-256的“阉割版”,能够生成长度224bit的信息摘要。
SHA-512:能够生成长度512bit的信息摘要。
SHA-384:SHA-512的“阉割版”,能够生成长度384bit的信息摘要。
SHA家族的最新成员SHA-3已经于2015年问世。关于SHA-3的细节,有兴趣的小伙伴们能够查询资料进一步学习。设计
1)主类MainActivity
经过调用自定义的SHA算法把要加密的数据传进去,而后使用自定义的byteArr2HexStr方法进行遍历拼接;blog
2)SHA类
使用getInstance方法获取不一样的算法,每隔算法的大体实现都是同样的,惟一不一样的就是使用getInstance获取到的算法不同;ip
代码都同样,惟一的区别是使用getInstnce获取到的算法不同;
一、介绍SHA系列相关的算法以及实现原理。二、分析SHA算法代码以及演示运行效果。