哈希算法原理(哈希值原理)

OKX欧意app

欧意交易app是全球排名第一的虚拟货币交易所。

APP下载   官网地址

哈希算法原理(哈希值原理)插图

哈希 Hash 算法介绍

哈希算法也被称为散列算法,但英语单词是 Hash,简单地说,任何长度的输入信息都可以通过算法转换为固定长度的输出信息,即哈希值。通常,哈希值的格式是16或10进制,如以下使用 md5 哈希算法示例

md5("123456")=>"e10adc3949ba59abbe56e057f20f883e"

主要特点:

  • 原始数据无法从哈希值中推导出,因此Hash算法广泛应用于现代密码系统

  • 无碰撞 不同的信息应该得到不同的值,但从理论上讲,哈希算法实际上可能会发生碰撞,输入信息是无限的,而输出的哈希值长度是固定的,所以它是有限的。例如,如果你想把10个苹果放在9个抽屉里,一个抽屉里肯定会有多个苹果,但哈希算法的碰撞概率很小,比如128个哈希值,有2个128个空间。

  • 高效 在处理大原值时,也能快速计算哈希值

  • 无规律 原始输入信息修改一点信息,得到的哈希值也是大不相同的

哈希算法有很多实现,常见的有 MD5,SHA-1,还有像 C#,Java 有些语言有直接的 GetHashCode(),hashCode() 函数可以直接来用。

分布式存储场景

在互联网场景中,它通常面临大量的数据和用户。为了满足大量数据的写入和查询,以及高可用性,单机存储服务器当然不能满足需求,通常需要使用多个服务器来形成分布式存储。

场景描述:

在本文中,为了方便大家更好的理解,这里列出了三个用户,即 James、 Bob、 Lee,我们需要在存储服务器节点中写下用户的图片ABC三个节点,当查询用户的图片时,需要快速定位用户的图片存储在哪个节点,然后直接从该节点查询,以满足高效的查询。

哈希算法原理(哈希值原理)插图1

实现思路:

首先,我们可以识别用户标志 Hash 计算,为了方便演示,我在这里使用用户名作为Hash当然,你也可以对待用户IP或者是UserId 进行Hash计算,Hash计算后会生成一个int这里的公式是 hash(name) % 3,计算结果只有三种情况,即 0、1、2,然后我们将这三种结果和三个存储节点进行映射,0 ==> A,1 ==> B,2 == C。因为Hash算法在多次计算一个值后会得到相同的hash值,所以上面的公式,一个用户的图片每次都会固定在其中一个节点中,这样查询也可以通过hash算法快速找到用户图片所在的节点。

正文完
 

OKX欧意app

欧意交易app是全球排名第一的虚拟货币交易所。

APP下载   官网地址