单向散列函数介绍

一 点睛

单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。

单向散列函数根据消息的内容计算出散列值。

这里的消息不一定是人类能够读懂的文字,也可以是图像文件或声音文件。单向散列函数不需要知道消息实际代表的含义。无论任何消息,单向散列函数都会将它作为单纯的比特序列来处理,即根据比特序列计算出散列值。

散列值的长度和消息的长度无关。无论消息是1比特、还是100MB、甚至100GB,单向散列函数都会计算出固定长度的散列值。以SHA-256单向散列函数为例,它所计算的散列值的长度永远是256比特(32字节)。

散列值的长度总是固定的。

由于散列值很短,因此很容易处理和使用。

二 实战

场景:Alice想确认今天看到的文件和昨天的文件是否是同一份文件

回家之前,Alice用单向散列函数计算文件的散列值,在这里Alice的文件就相对于消息。假设她计算出的散列值如下:

单向散列函数所输出的散列值长度时固定的(在这个例子中是32字节),无论Alice的文件大小是几百MB,甚至是几GB,散列值的长度永远是32字节(256比特)。Alice可以将这个值打印出来放在安全的地方。

第二天早上,Alice再次计算硬盘中文件的散列值,如果再次计算出的散列值为:

和昨晚的散列值一致,就可以判断文件是真的。只要单向散列函数工作正常,那么“只要散列值相等,消息就相等”这个判断就有很高的概率是成立的。

如果计算出的散列值像下面这样:

和昨晚散列值不一致,那么这个文件和昨晚的文件就绝对是不一样的。

要确认完整性,不需要对比消息本身,而只要对比单向散列函数计算出的散列值就可以了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值