开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 6天,点击查看活动详情
保障数据完整性-hash算法(散列,摘要)
确实,私钥是你服务端保存的,没人能获取到
但是你的公钥是公开的是吧?
那好,我把公钥给你替换了,你用的就是我的公钥了,你用我的公钥进行加密我自然就可以得知你传送的这个对称加密的密钥是什么,然后解开你的数据修改你的数据。
接下来在发送给服务端这样我就是你们的中间人了
服务端发给你的数据其实是发给我的,你发给服务端的数据其实也是发给我的。而我仅仅需要吧服务端公开的公钥进行替换即可
所以一个问题孕育而生了:我如何确保非对称加密的对称加密密钥的公钥是正确的是服务端呢
hash算法的特点
hash值大小是固定的
sha256的长度是规定的,不管是什么文件,用这个算法生成的sha值都是256位的数据
下载文件的时候经常会下载一个sha值文件,是因为sha值是进行对比的,看下文件是否有修改过。
可以看到这个sha文件里面的值和我们自己用sha1算法生成这个文件的sha值是一样的。
雪崩效应
这个值是随机的,只要进行hash的文件内容不一样,那么最终得出来的sah值是完全不一样的
不可逆
通过得出来的hash值,你是反向获取不到这个文件的
唯一性
每个文件只有一个hash值,只要内容不变,他生成的hash值是一样的
彩虹表
唯一性代表着可以记录文件对应的hash值,有个彩虹表可以通过hash值找到你对应的文件内容
抗碰撞性
抗碰撞性就是指通过彩虹表使用一个固定的hash值能不能被彩虹表查到对应的内容
之前有个破解是指通过文件1生成文件2,这两个的sha值是一样的。不是说通过hash值获取到文件内容