Miklix

Fowler-Noll-Vo FNV1-64 哈希码计算器

已出版: 2025年2月17日 UTC 21:35:20

哈希码计算器使用 Fowler-Noll-Vo 1 64 位 (FNV1-64) 哈希函数根据文本输入或文件上传计算哈希码。

为了使尽可能多的人能够访问本页面,本页面由英文机译而成。遗憾的是,机器翻译技术尚不完善,因此可能会出现错误。如果您愿意,可以在此处查看原始英文版本:

Fowler-Noll-Vo FNV1-64 Hash Code Calculator

FNV-1 64 位哈希函数属于 Fowler–Noll–Vo (FNV) 哈希函数系列,旨在快速进行哈希处理,同时保持哈希值的良好分布。它通常用于哈希表、校验和和数据查找等应用。它生成 64 位(8 字节)哈希码,通常表示为 16 位十六进制数。

完全披露:本页面使用的哈希函数的具体实现并不是我写的。它是 PHP 编程语言中的一个标准函数。我只是为了方便,制作了网络接口,以便在此公开使用。


计算新的哈希代码

通过本表格提交的数据或上传的文件在服务器上的保存时间仅限于生成所需的哈希代码。在结果返回到您的浏览器之前,这些数据将被立即删除。

输入数据:



提交的文本采用 UTF-8 编码。由于哈希函数对二进制数据进行运算,因此运算结果会与使用其他编码的文本不同。如果需要计算特定编码文本的哈希值,则应上传文件。



关于 Fowler-Noll-Vo FNV-1 64 位哈希算法

我不是数学家,但我会尝试用我的非数学家同事能理解的类比来解释这个哈希函数。如果你更喜欢科学正确、数学可怕的解释,我相信你可以在别处找到它 ;-)

首先,让我们将 FNV-1 算法想象成制作特殊冰沙的配方。您添加的每种成分(如水果、牛奶或蜂蜜)都代表一段数据 - 比如字母、数字,甚至是整个文件。

现在,目标是以非常特殊的方式混合这些成分,这样即使配方中最微小的变化(例如添加一颗额外的蓝莓)也会使冰沙的味道完全不同。这就是哈希函数的工作原理 - 它们为每组独特的成分(或输入数据)创建独特的“风味”(或哈希值)。

FNV-1 算法实现这一目标的方式是一个多步骤的过程:

步骤 1:从基础开始(偏移基础)

想象一下,这就像将特殊的冰沙底料倒入搅拌机中。无论你添加什么成分,这个底料始终是相同的。在 FNV-1 中,这被称为“抵消基础” - 只是一个花哨的起始数字。

步骤2:逐一添加原料(处理数据)

现在,您可以开始添加配料,一次添加一种 - 比如说一颗草莓、一根香蕉、一些蜂蜜。每一种都代表一个字节的数据。

步骤 3:与秘密乘数混合(FNV Prime)

添加每种原料后,按下搅拌按钮,但这里有一个转折点:搅拌机将所有原料乘以一个秘密的“魔法数字”,称为 FNV 素数。这有助于将原料混合得非常好。

步骤 4:添加一点魔法(XOR 运算)

在添加下一种配料之前,你要撒上一点魔法粉(这就是异或运算)。这就像以意想不到的方式改变口味,确保即使是很小的变化也能带来很大的不同。

步骤 5:重复,直到完成

您不断地混合并撒上魔法粉,直到处理完所有新原料。

步骤 6:最终冰沙(哈希值)

完成后,将冰沙倒出。最终的味道(哈希值)取决于确切的成分组合。如果你再加一颗蓝莓,味道就会完全不同。

这里介绍的版本是原始的 FNV-1 64 位版本。还有一个改进的 FNV-1a 64 位版本可用:Fowler-Noll-Vo FNV1a-64 哈希码计算器

分享至 Bluesky在 Facebook 上分享在 LinkedIn 上分享在 Tumblr 上分享分享至 X在 LinkedIn 上分享在Pinterest上固定

米克尔·邦·克里斯滕森

关于作者

米克尔·邦·克里斯滕森
迈克尔 是 miklix.com 的创建者和所有者。他拥有 20 多年的专业计算机程序员/软件开发人员经验,目前全职受雇于一家大型欧洲 IT 公司。不写博客时,他把业余时间花在各种兴趣、爱好和活动上,这在一定程度上反映在本网站涵盖的各种主题上。