作为信息摘要算法,SHA与MD5计算过程非常相似,这里记录一下其异同:
1 模数不同:
MD5 4个64bit初始化常量 64个K
SHA1 5个64bit初始化常量 4个K
SHA256 8个64bit初始化常量 80个K
SHA512 8个128bit初始化常量 80个K
2 分组及分组拓展和分组分段
MD5 512bit分为16段每段32bit 无需拓展 改成小端字节序
SHA1 512bit分为16段每段32bit 加上了扩展出来的64段,共80段 不用改
SHA256 512bit分为16段每段32bit 加上了扩展出来的64段,共80段 不用改
SHA512 1024bit分为16段每段64bit 加上了扩展出来的64段,共80段 不用改
3 轮函数(每段一轮,此外MD5还会重复4轮)
4 输出摘要
MD5 转为大端字节序然后拼接得到128bit输出
SHA1 拼接得到128bit输出
SHA256 拼接得到258bit输出
SHA512 拼接得到512bit输出
如下8个模数
如下分组拓展多了64段
分组中每一段的计算方式与MD5也存在差异