HASH算法PPT
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Kt = 5A827999 ( 0 ≤ t ≤ 19) Kt = 6ED9EBA1 (20 ≤ t ≤ 39) Kt = 8F1BBCDC (40 ≤ t ≤ 59) Kt = CA62C1D6 (60 ≤ t ≤ 79)
21
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (4)对于0 ≤ t ≤ 79,执行以下循环:
W4
W5
W6
W7
00000000 00000000 00000000 00000000
W8
W9
W10
W11
00000000 00000000 00000000 00000018
13/18
W12
W13 W14
W15
13
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (2)扩展W16,W17,…,W79 Wt = S1(Wt-3 ⊕Wt-8 ⊕Wt-14 ⊕Wt-16) (0 ≤ t ≤ 19)
ft(B,C,D) = (B ∧C) ∨((¬ B) ∧ D)
( 0 ≤ t ≤ 19)
ft(B,C,D) = B ⊕ C ⊕ D
(20 ≤ t ≤ 39)
ft(B,C,D) = (B ∧ C) ∨ (B ∧ D) ∨ (C ∧ D) (40 ≤ t ≤ 59)
ft(B,C,D) = B ⊕ C ⊕ D
输出 摘要
6
SHA-1算法描述
• 准备工作:把原始消息(如字符串、文件 等)转换成bit序列。
原始消息
转换 “abc”
bit序列 01100001 01100010 01100011
‘a’=0x61 ‘b’=0x62 ‘c’=0x63
7
SHA-1算法描述
• 步骤1:补位。最高位补1,其余补0,使得 数据位总长度对512取余的结果为448。
3
Hash算法
• 散列算法 • 作用:对任何不定长的比特串(消息),计算
出一个定长的比特串(消息摘要或散列值) • 常见Hash算法:SHA-1,MD5,SM3
4
Hash算法特点
• 定长输出 • 单向性:对任意给定的码h, 寻求x使得
H(x)=h在计算上是不可行的 • 弱抗攻击性:任意给定分组x, 寻求不等于x
( 0 ≤ t ≤ 19)
ft(B,C,D) = B ⊕ C ⊕ D
(20 ≤ t ≤ 39)
ft(B,C,D) = (B ∧ C) ∨ (B ∧ D) ∨ (C ∧ D) (40 ≤ t ≤ 59)
ft(B,C,D) = B ⊕ C ⊕ D
(60 ≤ t ≤ 79)
19
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (4)对于0 ≤ t ≤ 79,执行以下循环:
• 步骤2:补长度。将原始数据的长度补到补 位操作后的消息后面。
补位后 的序列
转换成 16进制
61626380 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000018
Hash算法
2014.09.09
1
• 目录
消息认证 Hash算法特点 SHA-1原理 SHA-1、SM3对比
2
消息认证
• 定义:通过对消息或者消息有关的信息进 行加密或签名变换进行的认证
• 作用:允许通信的当事人验证所接受的消 息为可信消息。
• 消息认证技术中通常都会用到一类特殊的 数学算法——哈希算法。
A = H0 B = H1 C = H2 D = H3 E = H4
18
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (4)对于0 ≤ t ≤ 79,执行以下循环:
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt
ft(B,C,D) = (B ∧C) ∨((¬ B) ∧ D)
பைடு நூலகம்
10
SHA-1算法描述
• 步骤3:初始化缓冲区{Hi},160bit。
H0 = 0x67452301 H1 = 0xEFCDAB89 H2 = 0x98BADCFE H3 = 0x10325476 H4 = 0xC3D2E1F0
11
SHA-1算法描述
• 步骤4:将步骤2得到的消息M以512bit分 组。
原始序列 01100001 01100010 01100011 24位
补位后 01100001 01100010 01100011 序列 10000000000 … … 00000000000
448位
补1位1,补423位0 8
SHA-1算法描述
• 步骤1:补位。最高位补1,其余补0,使得 数据位总长度对512取余的结果为448。
St(W) 将W循环左移t位
14
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (3)令
A = H0 B = H1 C = H2 D = H3 E = H4
15
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (4)对于0 ≤ t ≤ 79,执行以下循环:
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt
补位后 的序列
转换成 16进制
61626380 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9
SHA-1算法描述
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt A = H0,B = H1,C = H2,D = H3,E = H4
20
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (4)对于0 ≤ t ≤ 79,执行以下循环:
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt
的y, 使得H(y)= H(x)在计算上不可行 • 强抗攻击性:寻求对任何的(x,y)对使得
H(x)=H(y)在计算上不可行
5
SHA-1
• 可以对长度不超过2^64比特的消息进行计 算,输入以512位数据块为单位处理,产生 160比特的消息摘要作为输出。
小于2^64bit
160bit
输入 消息
SHA-1 变换
24
SHA-1与SM3对比
SHA-1
SM3
输入
≤2^64
≤2^64
输出
160bit
256bit
填充 添加1bit 1、nbit 0和64bit原始消息的长度,使 得总长度是512的整数倍
分组
按512bit分组
扩展
将每一分组划分16个 将每一分组划分16个 字W0…W15,再扩展 字W0…W15,再扩展 W16…W79,共80个字 W16…W63,共64个字
M = M1 || M2 || … || Mi || … || Mn
例
512bit 512bit
512bit
512bit
M = 61626380 00000000 00000000 00000000 M1
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
(60 ≤ t ≤ 79)
16
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (2)扩展W16,W17,…,W79 Wt = S1(Wt-3 ⊕Wt-8 ⊕Wt-14 ⊕Wt-16) (0 ≤ t ≤ 19)
St(W) 将W循环左移t位
17
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (3)令
12/18 00000000 00000000 00000000 00000018
12
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (1)将Mi分成16个字W0,W1,…,W15
M1 = 61626380 00000000 00000000 00000000
W0
W1
W2
W3
00000000 00000000 00000000 00000000
23
SHA-1算法描述
• 步骤6:重复步骤5,对消息块M1…Mn进行 处理。
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt E = D ; D = C ; C = S30(B) ; B = A ; A = TMP
• 处理完所有的Mn后,得到160bit消息摘要
H0 H1 H2 H3 H4
压缩函数
压缩成160bit
压缩成256bit
25
• Thank You!
26
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt E = D ; D = C ; C = S30(B) ; B = A ; A = TMP
22
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (5)上一步循环执行完成后,令
H0 = H0 + A H1 = H1 + B H2 = H2 + C H3 = H3 + D H4 = H4 + E
21
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (4)对于0 ≤ t ≤ 79,执行以下循环:
W4
W5
W6
W7
00000000 00000000 00000000 00000000
W8
W9
W10
W11
00000000 00000000 00000000 00000018
13/18
W12
W13 W14
W15
13
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (2)扩展W16,W17,…,W79 Wt = S1(Wt-3 ⊕Wt-8 ⊕Wt-14 ⊕Wt-16) (0 ≤ t ≤ 19)
ft(B,C,D) = (B ∧C) ∨((¬ B) ∧ D)
( 0 ≤ t ≤ 19)
ft(B,C,D) = B ⊕ C ⊕ D
(20 ≤ t ≤ 39)
ft(B,C,D) = (B ∧ C) ∨ (B ∧ D) ∨ (C ∧ D) (40 ≤ t ≤ 59)
ft(B,C,D) = B ⊕ C ⊕ D
输出 摘要
6
SHA-1算法描述
• 准备工作:把原始消息(如字符串、文件 等)转换成bit序列。
原始消息
转换 “abc”
bit序列 01100001 01100010 01100011
‘a’=0x61 ‘b’=0x62 ‘c’=0x63
7
SHA-1算法描述
• 步骤1:补位。最高位补1,其余补0,使得 数据位总长度对512取余的结果为448。
3
Hash算法
• 散列算法 • 作用:对任何不定长的比特串(消息),计算
出一个定长的比特串(消息摘要或散列值) • 常见Hash算法:SHA-1,MD5,SM3
4
Hash算法特点
• 定长输出 • 单向性:对任意给定的码h, 寻求x使得
H(x)=h在计算上是不可行的 • 弱抗攻击性:任意给定分组x, 寻求不等于x
( 0 ≤ t ≤ 19)
ft(B,C,D) = B ⊕ C ⊕ D
(20 ≤ t ≤ 39)
ft(B,C,D) = (B ∧ C) ∨ (B ∧ D) ∨ (C ∧ D) (40 ≤ t ≤ 59)
ft(B,C,D) = B ⊕ C ⊕ D
(60 ≤ t ≤ 79)
19
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (4)对于0 ≤ t ≤ 79,执行以下循环:
• 步骤2:补长度。将原始数据的长度补到补 位操作后的消息后面。
补位后 的序列
转换成 16进制
61626380 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000018
Hash算法
2014.09.09
1
• 目录
消息认证 Hash算法特点 SHA-1原理 SHA-1、SM3对比
2
消息认证
• 定义:通过对消息或者消息有关的信息进 行加密或签名变换进行的认证
• 作用:允许通信的当事人验证所接受的消 息为可信消息。
• 消息认证技术中通常都会用到一类特殊的 数学算法——哈希算法。
A = H0 B = H1 C = H2 D = H3 E = H4
18
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (4)对于0 ≤ t ≤ 79,执行以下循环:
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt
ft(B,C,D) = (B ∧C) ∨((¬ B) ∧ D)
பைடு நூலகம்
10
SHA-1算法描述
• 步骤3:初始化缓冲区{Hi},160bit。
H0 = 0x67452301 H1 = 0xEFCDAB89 H2 = 0x98BADCFE H3 = 0x10325476 H4 = 0xC3D2E1F0
11
SHA-1算法描述
• 步骤4:将步骤2得到的消息M以512bit分 组。
原始序列 01100001 01100010 01100011 24位
补位后 01100001 01100010 01100011 序列 10000000000 … … 00000000000
448位
补1位1,补423位0 8
SHA-1算法描述
• 步骤1:补位。最高位补1,其余补0,使得 数据位总长度对512取余的结果为448。
St(W) 将W循环左移t位
14
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (3)令
A = H0 B = H1 C = H2 D = H3 E = H4
15
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (4)对于0 ≤ t ≤ 79,执行以下循环:
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt
补位后 的序列
转换成 16进制
61626380 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9
SHA-1算法描述
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt A = H0,B = H1,C = H2,D = H3,E = H4
20
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (4)对于0 ≤ t ≤ 79,执行以下循环:
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt
的y, 使得H(y)= H(x)在计算上不可行 • 强抗攻击性:寻求对任何的(x,y)对使得
H(x)=H(y)在计算上不可行
5
SHA-1
• 可以对长度不超过2^64比特的消息进行计 算,输入以512位数据块为单位处理,产生 160比特的消息摘要作为输出。
小于2^64bit
160bit
输入 消息
SHA-1 变换
24
SHA-1与SM3对比
SHA-1
SM3
输入
≤2^64
≤2^64
输出
160bit
256bit
填充 添加1bit 1、nbit 0和64bit原始消息的长度,使 得总长度是512的整数倍
分组
按512bit分组
扩展
将每一分组划分16个 将每一分组划分16个 字W0…W15,再扩展 字W0…W15,再扩展 W16…W79,共80个字 W16…W63,共64个字
M = M1 || M2 || … || Mi || … || Mn
例
512bit 512bit
512bit
512bit
M = 61626380 00000000 00000000 00000000 M1
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
(60 ≤ t ≤ 79)
16
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (2)扩展W16,W17,…,W79 Wt = S1(Wt-3 ⊕Wt-8 ⊕Wt-14 ⊕Wt-16) (0 ≤ t ≤ 19)
St(W) 将W循环左移t位
17
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (3)令
12/18 00000000 00000000 00000000 00000018
12
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (1)将Mi分成16个字W0,W1,…,W15
M1 = 61626380 00000000 00000000 00000000
W0
W1
W2
W3
00000000 00000000 00000000 00000000
23
SHA-1算法描述
• 步骤6:重复步骤5,对消息块M1…Mn进行 处理。
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt E = D ; D = C ; C = S30(B) ; B = A ; A = TMP
• 处理完所有的Mn后,得到160bit消息摘要
H0 H1 H2 H3 H4
压缩函数
压缩成160bit
压缩成256bit
25
• Thank You!
26
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt E = D ; D = C ; C = S30(B) ; B = A ; A = TMP
22
SHA-1算法描述
• 步骤5:对于Mi进行以下处理 • (5)上一步循环执行完成后,令
H0 = H0 + A H1 = H1 + B H2 = H2 + C H3 = H3 + D H4 = H4 + E