单向散列函数——SHA-1

一. 加密算法描述

在这里插入图片描述
1. 填充
(a)添加1:在消息末尾添加一个1bit的“1”
(b)添加0:添加0直到消息长度为512的整数倍,最后一个512bit的分组的最后64bit需要空出来以保存原始的消息长度。
(c)添加原始的消息长度:消息长度 < 2^64 bit
2. 计算W0~W79
将输入分组的512bit分成32bit*16组,并将它们命名为W0~W15。其他的:在这里插入图片描述
在这里插入图片描述
3. 分组处理
在这里插入图片描述
通过上述80个步骤的反复执行,SHA-1就能够将已经填充的信息全部混入这160比特的内部状态中,而SHA-1所输出的散列值,就是所有处理结束之后的最终的内部状态(160bit)
单步处理:在这里插入图片描述
由于上述处理要循环80个步骤,因此输入分组中一个比特的变化就会影响到散列值中几乎所有的比特

二. 对单项散列函数的攻击

1. 暴力破解:利用文件的冗余性生成具有相同散列值的另一个文件,这是试图破解单向散列函数的“弱抗碰撞性”的攻击
文档文件的冗余性:在不改变文档意思的前提下能够对文件的内容进行修改的程度。

2. 生日攻击:找到s散列值相同的两条消息,而散列值则可以是任意的,这是试图破解单向散列函数的“强抗碰撞性”的攻击
生日问题:在N个人中,如果至少有两个人生日的一样的概率大于二分之一,那么N至少是多少?(排除2月29的情况)
区分:两个人的生日是某个特定的日起&&只要有两个人的生日相同,不管哪一天
解题思路:1-N个人生日全不一样
(1)N个人生日全不一样的组合的数量:
365364。。。(364-N+1)
(2)所有情况的数量:
365
365*。。。365=365^N
(3)1 - 365
364*。。。*(364-N+1)/ 365^N
当N=23时,值约为0.507297 > 0.5
在这里插入图片描述
在这里插入图片描述
单向散列函数能够辨别出“篡改”,但无法辨别出“伪装”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值