我们经常所说的哈希值是什么?通俗点

发布于 2022-09-01 21:54:01 字数 24 浏览 12 评论 0

我们经常所说的哈希值是什么?通俗点

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

赤濁 2022-09-08 21:54:01

哈希值是由哈希函数从一个给定的数据计算出来的。哈希函数H和数据v满足如下要求:

1、需要有一个函数(通常是等号)来判断v1和v2是否相等。这里的相等是指逻辑上的。譬如说你实现一个分数的struct,那么只要他们约分后的结果一样,那么这两个分数就是相等的,尽管他们的分子和分母这些数据可能不相等。
2、对于v1==v2的情况,必须要有H(v1)==H(v2)。但是并没有要求在不同的时间里,哈希函数一定要给出一样的结果。

当你需要用哈希值来做不同的事情的时候,譬如说加密,譬如说做哈希表,对于需求或者自然所规定的不同的数据集,你要选择不同的哈希函数,才能起到最好的效果。

〆一缕阳光ご 2022-09-08 21:54:01

hash一般用来数据查找。
比如有一个数组{1,2,200,300,123,444,555,666,777,222,211,22,33,4,5,33}
如何查找这个数组呢,最简单的当然是遍历数组,一个个比。但是如果这个数组很大,这样效率肯定很低。
为了更好的查找数组,我们可以把这个数组分成多个子数组,比如分成2个数组,那么可以简单的奇数一个数组,偶数一个数组,如果分成4个,那么可以根据最低端2位来,或者说v%4。
v%4这个就是hash值。对整数数据来说,取模是个很简单的hash函数。
那如果是字符串呢,常见的有crc,md5等。如md5,无论字符串多长,都计算出32字节的md5值,那么比较32字节会比比较大字符串快很多。
hash值相等,原值不一定相等。但是hash值不相等,原值必定不相等。这个特性也用来验证源码是否被修改,如发布一个程序,计算出md5值,那么使用者验证下md5值,如果不相等,则肯定被人修改过了,说不定就被人安装了木马。那么如果相等,则也有可能被修改过的,但是修改过之后md5要一样,就有点难,几乎不可能出现。

苄①跕圉湢 2022-09-08 21:54:01

通过一个固定的算法,给内容一个固定的标签,并尽可能的保证在内容变动之后,标签值也跟着改变

最近可好 2022-09-08 21:54:01

举个例子,在php中通过md5加密后得到的字符串叫做哈希值,英文名hash.

<?php
echo md5('test'); // 就可以知道test经过md5加密之后的值,这个就是哈希值,当然你可以自己写个算法对数据进行一个加密,得到的值也叫做哈希值
?>
迷荒 2022-09-08 21:54:01

哈希值就是通过一定的运算规则将数据转化后的值

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文