SHA1算法

什么是SHA1算法(Secure Hash Algorithm)

SHA1算法也是一种哈希算法,也称单向散列算法,不可逆,适用于数字签名标准。与MD5大同小异。

算法流程

(1)明文处理,对明文进行填充,使其满足模512余448,填充方式与MD5相同,然后补64位的明文数据长度,这里用的是大端字节序。
(2)分组,将512位的明文以32位为一组划分为16组。
(3)初始化变量,这里用到五个变量A、B、C、D、E。
(4)分组后的明文数据有16组,将其拓展为80组,共320字节,大端字节序。
(5)80组明文数据进行4轮运算,一轮20个步骤,共80次。
(6)运算结束后,将计算的结果与初始化时的变量值相加。
(7)如果只有一个512位,就不需要继续计算,如果不止1个512位,那么上一步骤中相加后的结果作为个80轮循环中的五个变量值继续进行计算。
(8)最后,五个变量值的拼接后的数据就是其SHA1值。

算法实现

明文处理和分组与MD5相同,这里不再解释。

初始化变量

与MD5不同的是,SHA1使用了5个变量
A=0x67452301,
B=0xEFCDAB89,
C=0x98BADCFE,
D=0x10325476,
E=0xC3D2E1F0

16组明文数据扩展为80组

首先把原来的明文数据用M来表示,记为M[t] (t=0,1,…15)。
而扩展后的明文数据用W来表示,记为W[t] (t=0,1,…,79)。
在这里插入图片描述
扩展的方式就是前16组数据不变,从第17组到80组按照图中公式计算所得,(Wt-3)+(Wt-8)+(Wt-14)+(Wt-16),其结果左移1位得到的。

4轮运算

每轮20个步骤,这些步骤可以用一个公式来表示
A=(A<<5)+ft(B,C,D)+E+Wt+Kt,其结果赋值给了A,
将A变量值赋值给变量B,
将B变量值循环左移30位赋值给变量C,
将C变量值赋值给变量D,
将D变量值赋值给变量E。

f 函数表

在这里插入图片描述

计算后的结果与初始变量值相加便是最终的结果。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值