认识哈希算法

哈希算法又叫摘要算法(Digest),将给定数据转化成固定长度、不规则的数据。
哈希函数在计算机内部进行一些数值计算,目的就是为了验证原始数据是否被篡改。

第一特征
输出值的数据长度不变

  1. 输出数据的长度取决于哈希函数,例如在SHA-1的情况下,它固定为20个字节
  2. 即使输入非常大的数据,输出的哈希值数据长度也不会改变
  3. 同样不管输入的数据有多小,哈希值的数据长度是相同的

第二特征
相同的输入,输出必定相同

第三特征
即使输入了相似的数据,如果它们相差一个字节,输出也会有很大的不同

第四特征
即使输入完全不同的数据,输出相同的哈希值会以低概率出现,这种现象是哈希值冲突。
哈希碰撞是指,两个不同的输入得到了相同的输出。

哈希碰撞能不能避免?
碰撞是一定会出现的,因为输出的字节长度是固定的,但输入的数据长度是不固定的,有无数种输入。哈希算法是把一个无限的输入集合映射到一个有限的输出集合,必然会产生碰撞。

碰撞概率的高低关系到哈希算法的安全性,一个安全的哈希算法必须满足:

  1. 碰撞概率低
  2. 不可能通过哈希值来反推原数据

常用的哈希算法
MD4MD5SHA-0SHA-1SHA-2(SHA-256和SHA512)
在这里插入图片描述
根据碰撞概率,哈希算法的输出长度越长,就越难产生碰撞,也就也安全。

代码示例
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值