Hash算法的概念我们上次我们已经了解过了,本篇文章我们来了解一下hash的算法的原理及具体用途有哪些。
Hash算法原理
一种将任意长度的二进制字符串映射为定长二进制字符串的映射规则我们将它称之为哈希算法,同时也叫散列算法,经过原始数据映射后得到的二进制值叫做哈希值。哈希表(hash表)结构是哈希算法的一种应用,也叫散列表。它是经过数组支持按照下标随机访问数据的特性扩展、演化而来。
特点
哈希算法执行效率高,散列结果尽量均衡。
哈希值是不能反向推导原始数据的,我们也叫单向哈希。
哈希对输入数据敏感,就算你只是改了一个Bit,最后得到的哈希值也可能大不相同。
哈希中散列冲突的概率会小不少。
Hash算法用途
唯一标识
如若,现有十万文件, 给你一个文件,需要你在十万个文件中查找是否存在,你要怎么做?
这时我们就可以用哈希算法对文件进行计算, 然后比较哈希值是否相同.,因为存在哈希冲突的情况, 你可以在相同哈希值的文件中再进行二进制串比较。当然,用一个一个比对的笨方法也是可以的,只是时间上会太过悠长。
加密
将一些敏感数据字段如密码等进行MD5或SHA加密传输
数据校验
md5能够将一个文件经过计算转换成一个指定长度的字符串, 有效防止文件被篡改, 但是通过加密后的字符串很难逆向推出原文。
负载均衡
例:现有多台服务器, 但只有一个请求, 问:你要怎么确定这个请求应该路由到哪个路由器中?前提是必须保证相同的请求经过路由到达同一个服务器。
这里我们就可以保存一张路由关系的表, 如客户端IP和服务器编号的映射, 如若客户端很多的话, 我们还可以将客户端的唯一标识信息(如:IP、username等)进行哈希计算, 然后与服务器个数取模, 最后得到的就是服务器的编号。
以上就是本篇文章的所有内容,还有不懂的相关java架构师知识的话请记得关注奇Q工具网了解详情。
推荐阅读: