资讯详情

SHA1算法

SHA1算法介绍

  • 背景知识
    • 基本设定
    • 填充规则
    • 初始化寄存器
    • 扩展规则的新闻块
    • 压缩规则

背景知识

SHA(Secure Hash Algorithm)是由美国NIST1993年作为联邦信息处理标准发布的设计。 SHA-0是SHA早期版,SHA-0被公布后,NIST修改后的版本很快就发现了它的缺陷SHA-1,简称SHA。 目前NIST最新的官方版本是FIPS PUB 180-4(2015年8月)。

基本设定

输入信息的长度限制:小于264。 新闻分组长度:512比特。 输出摘要长度:160比特。 SHA算法的结构包括信息填充、信息块扩展和信息压缩 三部分。下面依次介绍。 为便于描述,用M表示待压缩消息。

填充规则

首先,对于待压缩的消息M,填充一个1和几个0,使总比特长度模512等于448。 然后,留出的64比特用于记录填充前消息M的长度。请注意,长度应以大端模式填充。 此时,填写后的消息M长度是512的整数倍。

初始化寄存器

SHA通过寄存器实现算法状态更新。由于算法输出长度为160比特,因此设置了5个32比特的寄存器A、B、C、D、E。其初始值为常数:

寄存器 初始值
A 0x67452301
B 0xEFCDAB89
C 0x98BADCFE
D 0x10325476
E 0xC3D2E1F0

扩展规则的新闻块

每个512比特的消息分块 M i M_i Mi,需要将其扩展到80个单词 W t W_t Wt,用于压缩阶段,包括 0 ≤ t ≤ 79 0\le t\le 79 0≤t≤79 。扩展规则如下: W t = C L S 1 ( W t ? 16 ⊕ W t ? 14 ⊕ W t ? 8 ⊕ W t ? 3 ) W_t=CLS_1(W_{t-16}\oplus W_{t-14}\oplus W_{t-8}\oplus W_{t-3}) Wt​=CLS1​(Wt−16​⊕Wt−14​⊕Wt−8​⊕Wt−3​) 其中前16个字 W 0 ∼ W 15 W_0\sim W_{15} W0​∼W15​为 M i M_i Mi​的16个32比特字。 C L S s CLS_s CLSs​表示对32比特长的数据循环左移s位。

压缩规则

压缩过程即更新寄存器的过程,共需迭代计算80次。更新规则为: ( A , B , C , D , E ) ← ( E + f t ( B , C , D ) + C L S 5 ( A ) + W t + K t , A , C L S 30 ( B ) , C , D ) (A,B,C,D,E)\larr (E+f_t(B,C,D)+CLS_5(A)+W_t+K_t,A,CLS_{30}(B),C,D) (A,B,C,D,E)←(E+ft​(B,C,D)+CLS5​(A)+Wt​+Kt​,A,CLS30​(B),C,D)

其中 f t f_t ft​函数中的运算是逐比特逻辑运算,即:

迭代次数 函数名 定义
0 ≤ t ≤ 19 0\le t\le 19 0≤t≤19 f 1 = f t ( B , C , D ) f_1=f_t(B,C,D) f1​=ft​(B,C,D) ( B ∧ C ) ∨ ( B ‾ ∧ D ) (B\wedge C)\vee(\overline B\wedge D) (B∧C)∨(B∧D)
20 ≤ t ≤ 39 20\le t\le 39 20≤t≤39 f 2 = f t ( B , C , D ) f_2=f_t(B,C,D) f2​=ft​(B,C,D) B ⊕ C ⊕ D B\oplus C\oplus D B⊕C⊕D
40 ≤ t ≤ 59 40\le t\le 59 40≤t≤59 f 3 = f t ( B , C , D ) f_3=f_t(B,C,D) f3​=ft​(B,C,D) ( B ∧ C ) ∨ ( B ∧ D ) ∨ ( C ∧ D ) (B\wedge C)\vee(B\wedge D)\vee(C\wedge D) (B∧C)∨(B∧D)∨(C∧D)
60 ≤ t ≤ 79 60\le t\le 79 60≤t≤79 f 4 = f t ( B , C , D ) f_4=f_t(B,C,D) f4​=ft​(B,C,D) B ⊕ C ⊕ D B\oplus C\oplus D B⊕C⊕D

对应的真值表为:

B C D f 1 f_1 f1​ f 2 f_2 f2​ f 3 f_3 f3​ f 4 f_4 f4​
0 0 0 0 0 0 0
0 0 1 1 1 0 1
0 1 0 0 1 0 1
0 1 1 1 0 1 0
1 0 0 0 1 0 1
1 0 1 0 0 1 0
1 1 0 1 0 1 0
1 1 1 1 1 1 1

K t K_t Kt​为4个常数:

迭代次数 函数名
0 ≤ t ≤ 19 0\le t\le 19 0≤t≤19 0x5A827999
20 ≤ t ≤ 39 20\le t\le 39 20≤t≤39 0x6ED9EBA1
40 ≤ t ≤ 59 40\le t\le 59 40≤t≤59 0x8F1BBCDC
60 ≤ t ≤ 79 60\le t\le 79 60≤t≤79 0xCA62C1D6

参考文献:

  1. https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf
  2. 现代密码学。杨波。

标签: 5w15kr电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台