Miklix

Fowler-Noll-Vo FNV1-32 雜湊碼計算器

已發佈: 2025年2月18日 凌晨12:16:14 [UTC]
最後更新: 2026年1月12日 下午1:29:25 [UTC]

使用 Fowler-Noll-Vo 1 32 位元 (FNV1-32) 雜湊函數根據文字輸入或檔案上傳計算雜湊碼的雜湊碼計算器。

該頁面是由英語機器翻譯而來的,以便盡可能多的人可以訪問。不幸的是,機器翻譯還不是一項完善的技術,因此可能會出現錯誤。如果您願意,可以在這裡查看原始英文版本:

Fowler-Noll-Vo FNV1-32 Hash Code Calculator

FNV-1 32 位元雜湊函數屬於 Fowler-Noll-Vo (FNV) 雜湊函數系列,旨在實現快速雜湊運算的同時保持良好的雜湊值分佈。它常用於哈希表、校驗和以及資料查找等應用。此函數產生一個 32 位元(4 位元組)雜湊碼,通常表示為 8 位元十六進位數。

完全披露:我沒有寫此頁面上使用的哈希函數的具體實現。它是 PHP 程式語言中包含的標準函數。為了方便起見,我僅製作了 Web 介面以便在此公開發布。


計算新的哈希碼

透過此表單提交的資料或上傳的檔案將僅在產生所要求的雜湊碼所需的時間內保留在伺服器上。它將在結果返回您的瀏覽器之前立即被刪除。

輸入資料:



提交的文本是UTF-8編碼的。由於雜湊函數對二進位資料進行操作,因此結果將與文字採用其他編碼時的結果不同。如果您需要計算特定編碼的文字的雜湊值,則應該上傳檔案。



關於 Fowler-Noll-Vo FNV-1 32 位元雜湊演算法

我不是數學家,但我會嘗試用一個非數學專業人士也能理解的類比來解釋這個雜湊函數。如果您喜歡嚴謹的、略顯晦澀的數學解釋,我相信您一定能在其他地方找到 ;-)

首先,我們可以把FNV-1演算法想像成製作特製冰沙的配方。你添加的每一種配料(例如水果、牛奶或蜂蜜)都代表一段數據——例如字母、數字,甚至是一整份文件。

現在,我們的目標是以非常特定的方式混合這些原料,使得即使配方中即使最微小的改動(例如多加一顆藍莓)也會讓冰沙的味道截然不同。這就是雜湊函數的工作原理——它們為每組獨特的原料(或輸入資料)產生一個獨特的「風味」(或雜湊值)。

FNV-1演算法實現這一目標的方式是一個多步驟過程:

步驟 1:從基準(偏移基準)開始

想像一下,這就像是往攪拌機裡倒入一種特製的奶昔底料。無論你添加什麼配料,這個底料始終不變。在 FNV-1 中,這被稱為「偏移基數」——其實就是一個比較專業的起始數值。

步驟二:逐一加入配料(資料處理)

現在你開始逐一加入食材──比如說一顆草莓,然後一根香蕉,再加一些蜂蜜。每一種食材都代表一個位元組的資料。

步驟 3:與秘密倍增器(FNV Prime)混合

添加每種食材後,按下攪拌按鈕,但這裡有個訣竅:攪拌機將所有食材乘以一個稱為 FNV 質數的秘密「魔法數字」。這有助於將所有食材充分混合。

第四步:加入一點魔法(異或運算)

在加入下一種配料之前,先撒上一點魔法粉(這就是異或運算)。這就像以意想不到的方式改變味道,確保即使是微小的改變也能產生巨大的影響。

第五步:重複直至完成

每加入一種新食材,就要繼續攪拌並撒上魔法,直到所有食材都處理完畢。

步驟 6:最終冰沙(哈希值)

完成後,把冰沙倒出來。最終的味道(雜湊值)取決於具體的食材組合。即使多加了一顆藍莓,味道也會完全不同。

此處展示的是原始的 FNV-1 32 位元版本。另有改進版的 FNV-1a 32 位元版本可供使用:鏈接

進一步閱讀

如果您喜歡這篇文章,您可能也會喜歡這些建議:


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

Mikkel Christensen

關於作者

Mikkel Christensen
麥可 是 miklix.com 的創建者和所有者。他有超過 20 年的專業電腦程式設計師/軟體開發人員經驗,目前全職受僱於一家歐洲大型 IT 公司。不寫部落格時,他會將業餘時間花在各種各樣的興趣、愛好和活動上,這在一定程度上反映在本網站所涵蓋的主題的多樣性上。