安全算法—Hash算法总结(二)

1. HASH算法对比分析

Hash函数称为杂凑函数散列函数,函数输入为一可变长度消息,输出为一固定长度串,该串被称为输入为x的Hash值或数字指纹。

1.1 Hash函数的基本要求

Hash函数一般满足以下几个基本要求:

(1) 输入x可以任意长度

(2) 输出数据长度固定Hash值得长度算法的类型决定,与输入的消息大小无关;

(3) 容易计算,给定任意x容易计算出xHash

(4) 单向函数,给出一个Hash值,很难反向计算出原始输入的数据;

(5) 唯一性,即难以找到两个不同的输入会得到相同的Hash输出

1.2 Hash函数的安全性

一个安全的单向迭代函数是构造安全Hash值得核心和基础,有了好的单向迭代函数,就可以用合适的迭代方法来构造迭代Hash函数

Hash函数的安全理论主要有以下两点:

(1) 函数的单向性;

(2) 函数的随机性。

1.3 SHA算法对比分析

安全散列算法Secure Hash Algorithm,简称SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法能够计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)算法

SHA一系列算法的统称,分别包括SHA-1SHA-256SHA384和SHA512。后面三种统称为SHA-2。SHA-384相当于SHA-512的缩减版。

各种SHA算法的数据比较如下表:(表中数据长度单位均为位

类别

SHA-1

SHA-256

SHA-384

SHA-512

SM3

消息摘要长度

160

256

384

512

256

消息长度

分组长度

512

512

1024

1024

512

计算字长度

32

32

64

64

32

计算步骤数

80

64

80

80

64

:上表中算法用做数据压缩,用于RSA签名或验证时使用。

1.4 SHA算法、SM3算法实现过程

SHA是数据加密算法,该算法的思接收一段明文,然后以一种不可逆的方式将转化为密文也可以简单理解为输出一串二进制数据,并把它转化为长度较短位数固定的输出序列散列值),也称为信息摘要或信息验证代码的过程。

一般来说SHA算法、SM3算法都包括以下处理过程:

1消息的填充

a. 首先在消息末尾添加比特“1” 再添加k 个“0”, k是满足L+ 1 + k 448mod512 的最小的非负整数。

SHA-384SHA-512需要满足1024分组。所以K需要满足L+ 1 + k 896mod1024

b. 然后再添加一个64位比特串,该比特串是长度L的二进制表示。填充后的消息m的比特长度为512的倍数。

注:SHA-384SHA-512需要满足1024分组。添加一个128位比特串,填充后的消息m的比特长度为1024的倍数。

例如:对消息01100001 01100010 01100011,其长度l=24,经填充得到比特串:

            

2消息扩展、分组处理

a. 分组

将填充后的消息按照一定大小进行分组,如果分成了N组,就是b(0),b(1)……b(N-1).

SHA-1SHA-256SM3按照512位进行分组

SHA-384SHA-512按照1024位进行分组

b. 消息扩展

★ SHA-1是将消息扩展为80消息列表两部分组成:1个32

16个字的填充后的消息 + 64个字计算得到的填充消息

★ SHA-256是将消息扩展为64个字的消息列表两部分组成:

16个字的填充后的消息 + 48个字计算得到的填充消息

★ SHA-384SHA-512是将消息扩展为80消息列表两部分组成:1个字64

16个字的填充后的消息 + 64个字计算得到的填充消息

★ SM3是将消息扩展生成132个字消息列表,用于压缩函数CF(三部分组成)

第一部分:(16填充得到的一组消息划分为16字形式表示,w0,w1……w15;

第二部分:(5216->67  

Wj = P1(Wj−16 ⊕ Wj−9 ⊕ (Wj−3 ≪ 15)) ⊕ (Wj−13 ≪ 7) ⊕ Wj−6

第三部分:640-63

W ‘j = Wj Wj+4

3迭代压缩

a. SHA-1首先要确定532初始值(A,B,C,D,E),然后进行4运算,每一轮包括20步骤,一共80

b. SHA-256首先要确定832位初始值(A,B,C,D,E,F,G,H),然后进行64迭代运算。

c. SHA-384SHA-512首先要确定8个64位初始值(A,B,C,D,E,F,G,H),然后进行80轮迭代运算。

d. SM3首先要确定832位初始值(A,B,C,D,E,F,G,H),然后进行64迭代运算。

注:对于多个分组数据,上一轮的输出结果下一轮的初始值。

4计算完成、输出结果

输出结果对于SHA-1、SHA-256、SHA-384、SHA-512,初始值加最后一次值取值对于SM3初始值与最后一次值的异或得到的值

a. SHA-1进过迭代压缩后,产生160位(20字节消息摘要。

b. SHA-256进过迭代压缩后,产生256位(32字节消息摘要。

c. SHA-384进过迭代压缩后,产生384位(48字节消息摘要。

d. SHA-512进过迭代压缩后,产生512位(64字节消息摘要。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值