全部版块 我的主页
论坛 数据科学与人工智能 IT基础 JAVA语言开发
1039 0
2022-05-11

常见的哈希算法

1SHA-1算法SHA-1的输入是最大长度小于264位的消息,输入消息以512位的分组为单位进行处理,输出是160位的消息摘要。SHA-1具有实现速度高、容易实现、应用范围广等优点,其算法描述如下。

对输入的消息进行填充:经过填充后,消息的长度模512应与448同余。填充的方式为第一位是1,余下各位都为0。再将消息被填充前的长度以big-endian的方式附加在上一步留下的最后64位中。该步骤是必须的,即使消息的长度已经是所希望的长度。填充的长度范围是1到512。

初始化缓冲区:可以用160位来存放Hash函数的初始变量、中间摘要及最终摘要,但首先必须进行初始化,对每个32位的初始变量赋值,即:

进入消息处理主循环,处理消息块:一次处理512位的消息块,总共进行4轮处理,每轮进行20次操作,如图所示。这4轮处理具有类似的结构,但每轮所使用的辅助函数和常数都各不相同。每轮的输入均为当前处理的消息分组和缓冲区的当前值A、B、C、D、E,输出仍放在缓冲区以替代旧的A、B、C、D、E的值。第四轮的输出再与第一轮的输入CVq相加,以产生CVq+1,其中加法是缓冲区5个字CVq中的每个字与中相应的字模232相加。

图 单个512位消息块的处理流程

输出:所有的消息分组都被处理完之后,最后一个分组的输出即为得到的消息摘要值。

SHA-1的步函数如图所示,它是SHA-1最为重要的函数,也是SHA-1中最关键的部件。

图 SHA-1的步函数

SHA-1每运行一次步函数,A、B、C、D的值就会依次赋值给B、C、D、E这几个寄存器。同时,A、B、C、D、E的输入值、常数和子消息块在经过步函数运算后就会赋值给A。

其中,t是步数,0≤t≤79,Wt是由当前512位长的分组导出的一个32位的字,Kt是加法常量。

哈希竞猜游戏系统开发,游戏规则定制,模式设计


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群