SHA1步骤详解及C++实现

本文详细解释了SHA1算法的步骤,包括字符串转换、消息填充和计算消息摘要过程,并提供了C++代码示例,展示了如何用C++实现SHA1哈希函数的计算。

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

SHA1步骤详解及C++实现

1.步骤详解

操作

一个字就是32位的二进制字符串,介于 0 0 0 2 3 2 − 1 2^32-1 2321之间的整数可以表示为一个字。

X和Y分别为一个字

  • X AND Y = X和Y按位与
  • X OR Y = X和Y按位或
  • X XOR Y = X和Y按位异或
  • NOT X = X取非
  • X+Y = X+Y后的结果模 2 32 2^{32} 232
  • S^n(X) = X循环左移n位

第一步:将字符串转换为ASCII码的二进制串

第二步:消息填充

填充规则:

  1. 在原始明文消息后补100…0,直到满足总长度 ≡ 448 m o d 512 \equiv448 \mathrm{mod }512 448mod512为止。
  2. 设原始明文消息的长度为 L   b i t L \ \mathrm{ bit} L bit,将 L L L表示为64位二进制串的形式,添加在最后。

经过上面两个步骤的处理,最终得到的处理后的数据如下图所示:
在这里插入图片描述

第三步:计算消息摘要

将数据按512比特一块进行分块,得到n块数据,记作 M ( 1 ) , M ( 2 ) , ⋯   , M ( n ) M(1),M(2),\cdots,M(n) M(1),M(2),,M(n).

一些操作和常量如下

对于整数t,和三个32位字B,C,D,有

if(0 <= t <= 19)
    f(t,B,C,D) = (B AND C) OR ((NOT B) AND D)
    
if(20 <= t <= 39)
    f(t;B,C,D) = B XOR C XOR D
    
if(40 <= t &l
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值