SHA-1实现

SHA-1算法将任意长度的输入通过消息填充、分组扩充和循环计算转化为160位固定长度的散列值。填充方法包括在末尾添加1、0以及消息长度。分组扩充通过特定规则扩展成80份。循环计算中,5个字H通过80轮运算与常量K和W[t]交互更新,最终得到散列结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SHA-1可将任意长度(小于2的64次方)的明文散列成固定的160位。这里分成三部分来实现SHA-1是如何操作的

一、消息填充

对明文进行填充,得到固定512位(或512的倍数),因为SHA-1是分组操作的,每一组512位。这篇文章以一组512位为例,不考虑很长。

填充方法:

1. 在明文后面先填充一个字节 1000 0000

2. 然后一直填充0,注意后面要空出64位

3. 最后64位填充的是明文的长度

举个例子:假设明文是 “abc” 因为 ‘a’ = 97, ‘b’ = '98', c = '99', 所以最开始的序列是:

01100001   01100010   01100011

1. 在明文后面先填充 1000 0000 ,  那么序列就变成了 

01100001   01100010   01100011   1000 0000

2. 然后一直填充0, 最后空出64位,所以这一步结束后一共有512-64=448位,如下所示,一行32位,共14行,满足32*14=448

01100001   01100010   01100011   10000000
00000000   00000000   00000000   00000000 
00000000   00000000   00000000   00000000 
00000000   00000000   00000000   00000000 
00000000   00000000   00000000   00000000
00000000   00000000   00000000   00000000
00000000   00000000   00000000   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值