Miklix

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

已發佈: 2025年2月18日 凌晨12:10:01 [UTC]

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

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

Fowler-Noll-Vo FNV1a-32 Hash Code Calculator

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

FNV-1a變體是原始FNV-1功能的改進版本,具有更好的安全性。

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


計算新的哈希碼

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

輸入資料:



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



關於 Fowler-Noll-Vo FNV-1a 32 位元哈希演算法

我不是數學家,但我會嘗試用我的非數學家同事能夠理解的類比來解釋這個雜湊函數。如果您更喜歡科學正確、令人恐懼的數學解釋,我相信您可以在其他地方找到它;-)

首先,讓我們將 FNV-1 演算法視為製作特殊冰沙的配方。您添加的每種成分(如水果、牛奶或蜂蜜)都代表一段數據 - 如字母、數字甚至整個文件。

現在,目標是以一種非常特殊的方式混合這些成分,以便配方中即使最微小的變化(例如添加額外的藍莓)也會讓冰沙的味道完全不同。這就是雜湊函數的工作原理 - 它們為每組獨特的成分(或輸入資料)創建獨特的“風味”(或雜湊值)。

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

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

想像一下,這就像是將特殊的冰沙基底倒入攪拌機中。無論添加什麼成分,其基礎始終是相同的。在 FNV-1 中,這被稱為「抵消基礎」——只是一個花哨的起始數字。

步驟2:逐一添加原料(處理數據)

現在,您開始逐一添加配料 - 比如說,一顆草莓,然後是一根香蕉,然後是一些蜂蜜。其中每一個代表一個位元組的資料。

步驟 3:與秘密乘數混合(FNV Prime)

加入每種原料後,點擊混合按鈕,但這裡有一個轉折:攪拌機將所有原料乘以一個稱為 FNV 素數的秘密「魔法數字」。這有助於很好地混合一切。

步驟 4:加入一點魔法(XOR 運算)

在加入下一種配料之前,你要撒上一點魔法粉(這就是 XOR 運算)。這就像以意想不到的方式改變味道,確保即使是微小的變化也會帶來巨大的不同。

步驟 5:重複,直到完成

您不斷地混合並撒上魔法粉,直到處理完所有新原料。

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

完成後,將冰沙倒出。最終的味道(雜湊值)取決於該成分的精確組合。如果你多加一顆藍莓,味道就會完全不同。

這裡介紹的版本是改進的 FNV-1a 32 位元版本。如果你需要原始版本,我還有一個計算器:Fowler-Noll-Vo FNV1-32 雜湊碼計算器

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

米克爾·邦·克里斯滕森

關於作者

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