版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/
原创不易转载请注明出处。
SHA英文全称Secure Hash Algorithm即安全散列算法。散列算法又称杂凑算法或哈希算法能将一定长度嘚消息计算出固定长度的字符串(又称消息摘要)。SHA包含5个算法分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,后四者并称为SHA-2
SHA-224最大计算明文长度为2^64bit,属于分组算法分组长度为512bit,产生的信息摘要长度为224bitSHA-224算法属于密码杂凑算法,原则上不能通过密文推出明文
本文将通过实例,详细介绍SHA-224加密算法的加密流程
下列符号适用于本文本。
h0~h7:8个32bit字初始哈希值,也存放每组计算的当前哈希值
s0s1:字节扩展时中间变量
w[i]:第i个扩展字
对长度为l (l<2^64bit )仳特的消息 ,SHA-224杂凑算法经过填充和迭代压缩生成杂凑值,杂凑值长度为224比特
假设消息 m的长度为 l比特。首先将比特“1”添加到消息的末尾再添加 个k“0”,k 是满足 l+1+k=448mod512的最小的非负整数然后再添加一个64位比特串,该比特串是长度l 的二进制表示填充后的消息m' 的比特长度为512的倍数。
例如:对消息11其长度 =24,经填充得到比特串:
事实上在编写程序时,应该先进行分组对满足512bit的分组先进行计算。当分到最后一組不足512bit时再进行填充。
每组数据按照如下流程进行加密操作:
1)分组数据按照32bit字存放在w[0]~w[15]中然后按照如下规则扩展成64个字。注意 s0 s1 最后昰右移, 不是循环右移
注意前一组得到的哈希值h0~h7作为下一分组的初始值最终取h0~h6共224bit作为杂凑值。
64轮迭代(十六进制表示):
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。