白话讲Hash

白话讲 HashHash 是什么(不同输入,定长输出)hashcode 校验文件完整性(输入敏感)防止从 hashcode 推测输入内容(单向性)hashcode 每个人都不陌生,我从接触计算机就开始听说这个名词,但是对其理解,其实一直限于知道有这个东西,大体上是干嘛的,从来没有细致的去思考过它存在的意义。直到,现在研究一个加密 IM 的项目,去思考和学习加密相关的知识,对 hashcode 才...
摘要由CSDN通过智能技术生成


hashcode 每个人都不陌生,我从接触计算机就开始听说这个名词,但是对其理解,其实一直限于知道有这个东西,大体上是干嘛的,从来没有细致的去思考过它存在的意义。直到研究一个加密 IM 的项目,去思考和学习加密相关的知识,对 hashcode 才慢慢熟悉起来,对其相关的知识也有了一些了解。本篇主要讲自己在接触 hashcode 过程中的一些感悟和思考。秉承习惯,用白话来描述,尽量避免专业词汇。

Hash 是什么(不同输入,定长输出)

先把 hash 作为一个函数来说:hash 函数是对输入数据,输出一个定长的编号,就是输入的可能是一个视频文件,可能是图片,可能是 text 文本,也可能是一个字母 a,b,c 。不管输入是什么,输入的根本都是二进制的 0和1 的一个序列。无论输入的 0 和1 的序列是怎样的顺序,多长,经过 hash 函数计算都会输出一个定长的编号。而这个编号就称为 hashcode。
我的理解是:互联网庞杂的数据需要管理,所以需要对其编号,每个文件都有一串定长的数与之对应起来。相当于给每个人一个身份证号码。既然是类似身份证号码,所以要保证不能有两个人拥有同一个身份证号码吧。所以 hash 函数要保证两个不同的输入,输出的编号也是不一样的。即不同的输入,经过 hash 函数计算产生不同的 hashcode。(由于工程实现一一对应比较困难,可能存在不同输入,产生相同的 hashcode ,这种现象叫碰撞,好的 hash 函数应该把碰撞概率尽可能的降低)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值