【图解密码技术】学习日记

第七章——单向散列函数

使用单向散列函数就可以获取消息的“指纹”,通过对比“指纹”,就能够知道两条消息是否一致。

什么是单向散列函数?

单向散列函数(one-way hash function)有一个输入和一个输出,其中输入称为消息,输出成为散列值。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以用来检查消息的完整性
无论任何消息,单向散列函数都会将它作为单纯的比特序列来处理,即根据比特序列计算出散列值。
散列值的长度和消息的长度无关,无论消息多长,单向散列函数都会计算出固定长度的散列值。
要确认完整性,我们不需要对比消息本身,而只要对比单向散列函数计算出的散列值就可以了。

单向散列函数的性质
1.根据任意长度的消息计算出固定长度的散列值
2.能够快速计算出散列值
3.消息不同散列值不同——具备抗碰撞性
(两个不同的消息产生同一个散列值的情况称为碰撞)
弱抗碰撞性:要找到和该条消息具有相同散列值的另外一条消息是非常困难的;
强抗碰撞性:要找到散列值相同的两条不同的消息是非常困难的
4.具备单向性
单向性指的是无法通过散列值反算出消息

**注意:**单向散列函数并不是一种加密,因此无法通过解密将散列值还原为原来的消息。

关于术语
单向散列函数的相关术语有很多变体,各种参考书中使用的术语也有所不同
单向散列函数 也称为 消息摘要函数 、哈希函数 或者杂凑函数
输入单向散列函数的消息也称为 原像
单向散列函数输出的散列值 也称为 消息摘要 或者 指纹
完整性也称为一致性

单向散列函数的实际应用
1.检测软件是否被篡改
2.基于口令的加密
(PBE password based encryption)将口令和盐(salt通过伪随机数生成器产生的随机值)混合后计算其散列值,然后将这个散列值用作加密的密钥。
3.消息认证码
将“发送者和接收者之间的共享密钥”和“消息”进行混合后计算出的散列值。
4.数字签名
数字签名的处理过程非常耗时,因此一般不会对整个消息内容直接施加数字签名,而是先通过单向散列函数计算出消息的散列值,然后再对这个散列值施加数字签名。
5.伪随机数生成器
6.一次性口令

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值