密码学Hash函数(杂凑函数)

杂凑函数的概念、性质、基本结构;常用杂凑函数的基本知识;杂凑函数应用的基本方式。

杂凑函数

Hash函数H输入可变长度的数据块M,输出固定长度的Hash值H(M)。
密码学Hash函数应用:消息认证码 ;数字签名;伪随机函数…

性质及结构

若杂凑函数h为单向函数,则h为单向杂凑函数。
无碰撞性:对单向杂凑函数h,在任意给定h(M)的情况下,找M’,使得h(M’)=h(M),在计算上不可行,则h为弱单向杂凑函数;对单向杂凑函数h,寻找任意M1, M2,M1 != M2,使得h(M1)=h(M2)在计算上不可行,则h为强单向杂凑函数。根据生日悖论,在N个元素的集合中,给定M找与M匹配的M’比从N中取任意一对元素(M,M’)匹配概率小得多。
分组迭代单向杂凑函数的结构:对于变长消息,通常先分组为固定长度的段,如m bit,将mb映射为nb,通过迭代函数E (E通常由轮函数多轮迭代实现,因此轮函数设计是分组迭代单向杂凑函数设计核心) 以最后的输出值作为整个输入的杂凑值。m>n,有数据压缩,MD5、SHA等,是不可逆映射;m=n,无数据压缩,通常分组加密使用这种映射,是单向陷门函数;m<n,有数据扩展,消息认证码通常是这种。

应用的基本方式

网络安全——技术与实践(第三版)

常用杂凑函数

MD5

输入分组大小:512bit。输入分组需要补充10000…至448bit,最后64bit填写消息长。分组:Y0,Y1…Y[L-1]。
每个分组要经过4轮运算,其中每轮运算输出128bit;每轮运算又可分为16轮迭代,共4*16 = 64次
输入分组划分:512bit输入分组,划分为16个字,每个字32bit。每次16轮迭代运算分别使用这16个字。
运算大致过程如下:

  • A、B、C、D四个32bit缓存器,初始矢量以十六进制大端序存储。

  • 16*4次迭代,每次更新一个32bit字。其中每轮运算使用一个逻辑函数f,即16次迭代共用一个逻辑函数函数。每次迭代都使用一个新的SINE函数构成的T值T[i]。i=1,2…64
    在这里插入图片描述

  • 最终杂凑值(Yq表示第q个分组):

在这里插入图片描述

SHA-3

与MD-5类似。输入分组大小512bit,最后一组补充100…0直至448bit,最后64bit填写消息长度。
共进行4轮运算,每轮运算包含20次迭代(4*20)。共使用4个逻辑函数f,其中第四轮与第二轮相同。输入分组512bit,16个32bit字拓展为80个32bit字。使用的常数共4个,每次运算使用一个常数(即每个常数被使用20次)。输出160 bit(5个32bit缓存器)。
在这里插入图片描述

SM3

消息分组512bit,输出杂凑值256bit。共有ABCDEFGH,8个32字寄存器。经过填充、迭代压缩(压缩至256bit);消息扩展(16字扩展为132字);压缩函数,最终输出256bit杂凑值。
与SHA256相比,SM3算法的压缩函数每一步使用2个消息字,每一步扩展能力更强。

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值