hash算法(原理)

OKX欧意app

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

APP下载   官网地址

hash算法(原理)插图

哈希 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三个节点,当查询用户的图片时,需要快速定位用户的图片存储在哪个节点,然后直接从该节点查询,以满足高效的查询。

hash算法(原理)插图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下载   官网地址