如果這個工具幫到了你,可以請作者喝杯咖啡 ☕
線上計算字串的FNV雜湊值,支援FNV1、FNV1a等演算法及多種輸入格式,適用於資料校驗與雜湊應用。
當您需要為一個字串快速生成一個固定長度的、分佈良好的識別符號,用於雜湊表、快取鍵或資料完整性校驗時,FNV雜湊正是為此設計的輕量級解決方案。本工具是一個線上FNV雜湊計算器,它能將您輸入的字串(支援明文、Hex、Base64或Bytes格式)透過指定的FNV演算法(如FNV1-32或FNV1A-64)轉換為對應的雜湊值,並以十六進制、Base64或位元組陣列形式輸出結果。FNV(Fowler-Noll-Vo)雜湊是一類經典的非加密雜湊函式,其核心邏輯基於一個初始偏移量(offset basis)和FNV素數(prime),透過迭代的異或與乘法運算,將任意長度的輸入對映為固定長度(如32位或64位)的雜湊值。
問:FNV雜湊和MD5有什麼區別?哪個更快?
FNV是專注於速度和分佈的非加密雜湊,通常比MD5等加密雜湊更快,但不具備抗碰撞攻擊等安全性,適用於雜湊表、快取鍵等效能敏感場景。MD5是加密雜湊,速度較慢但曾用於安全校驗。
問:輸入型別選“Bytes”時該怎麼填?
直接填寫位元組陣列的十進制JSON格式,例如輸入 [72, 101, 108, 108, 111] 代表字串“Hello”的ASCII位元組序列。
請確保“輸入型別”與您填入的資料格式嚴格匹配,否則會導致計算錯誤。處理含中文等非ASCII字元時,務必選擇正確的“字元編碼”(如UTF-8)。請注意,FNV雜湊並非為密碼學安全設計,請勿用於密碼儲存或敏感資料加密。鹽值與輪數會徹底改變雜湊結果,在生產環境中請謹慎配置並記錄相關引數。
對於資料去重或構建記憶體雜湊表,FNV1A-64因其良好的分佈特性是常用選擇。在需要將複雜物件序列化為快取鍵時,建議先將其轉換為確定的字串(如JSON),再使用FNV雜湊計算。一個典型示例:輸入字串“user:12345:profile”,使用FNV1A-32演算法(UTF-8編碼)計算,得到的十六進制雜湊值通常類似“a3915f0b”,此雜湊值可直接用作Redis等快取的鍵名,既縮短了鍵長度,又保持了唯一性。注意,不同語言或庫的FNV實現(初始偏移量、素數)可能存在細微差異,跨系統使用時需確保演算法實現一致。