工具用的順手嗎?
你的回饋能幫助我們做得更好
快速生成文字的JOAAT雜湊值,適用於資料校驗和資源標識
在瀏覽器內對 UTF-8 輸入位元組計算無符號32位 Jenkins one-at-a-time 雜湊;Base64編碼的是4個摘要位元組。不是加密演算法,不能用於密碼儲存。
概覽
了解工具能解決的問題、計算或處理邏輯,以及資料邊界。
JOAAT 是 Jenkins One-at-a-Time 的縮寫,屬於非密碼學雜湊函式。它逐位元組讀取輸入,在 32 位元狀態中執行加法、位移與 XOR 混合,最後再做收尾混合,輸出 4 個位元組的數值;頁面以十六進位文字呈現這個結果。這種短值可用來配合既有程式的資源名稱或索引鍵,但相同結果不代表原始文字相同。
32 位元輸出只有有限種可能值,輸入卻可以有很多種,因此不同文字可能碰撞。Bob Jenkins 的原始說明將 One-at-a-Time 定位為雜湊表查找用途,並明確排除密碼學用途。它不是加密,不含可供解密的密鑰,也不能還原出原文。
演算法處理的是位元組,不是人眼看到的字形。大小寫、前後空白、換行,以及文字採用的字元編碼,都可能改變輸入位元組與最後結果。此工具以文字欄接收原文並送出計算,沒有提供大小寫正規化或編碼選擇;若要和既有系統核對,先依對方規格處理文字,再輸入完全相同的內容。中文文字也應特別核實兩端的編碼方式,不要只憑畫面相同就判定輸入一致。
計算後會顯示「小寫」、「大寫」和「Base64」。前兩欄是同一份服務回傳文字的大小寫形式,並非各自重新計算;轉換英文字母大小寫不會改變其所代表的十六進位數值。Base64 欄則是將回傳的結果文字編成 Base64 字串,不能直接當成「把雜湊的四個原始位元組做 Base64」來和其他系統比對。對接規格時,請確認對方要的是十六進位文字、原始位元組,還是文字的 Base64 編碼。
指南
依步驟完成操作,並透過範例核對輸入與結果。
確認字串的大小寫、前後空白與換行是否都要保留。若目標程式會先轉小寫或做其他正規化,請先自行照其規則整理,再貼入相同文字。
在文字欄輸入或貼上內容,按下「計算雜湊」取得結果。空白內容無法送出;這項操作會把輸入文字傳到計算服務處理。
一般可先複製小寫或大寫欄的回傳文字,再與目標程式要求的表示法比較。若規格要求原始 4-byte 值或另一種位元組順序,不能只因顯示看似相近就直接替代。
建議以數筆由目標系統提供的測試字串交叉核對,包含大小寫不同、含空白及非 ASCII 字元的情況。每一筆都要確認正規化和編碼一致;單一英文樣本相符不足以證明所有輸入都相容。
情境
查看這項工具在不同工作與生活流程中的用法。
若遊戲模組或資源表明確使用 JOAAT,開發者可輸入資源名稱取得短值。先查清目標遊戲是否會轉小寫或改寫名稱;此頁不會代替目標環境完成這些前處理。
維護相容舊格式的開發者可計算少量文字鍵,檢查另一端的輸入與輸出格式。若將結果作索引,資料設計仍應保留原鍵並處理碰撞,不宜假定短值全球唯一。
若工作要求的是密碼儲存、登入驗證、數位簽章或防止資料遭竄改,JOAAT 不符合該安全目的;應依系統威脅模型選擇密碼學方案。
問答
集中解答常見疑問與容易混淆的問題。
雜湊運算依輸入位元組進行;此頁不自動轉小寫,所以大小寫不同的字串可能得到不同值。若目標系統會先正規化大小寫,請先套用相同規則。
不宜直接如此比較。頁面欄位是對服務回傳的結果文字做 Base64 編碼;目標若要求原始位元組的 Base64,兩者表示方式不同。
不能。雜湊不是加密;而且有限的 32 位元輸出可能由不同輸入產生,因此結果也無法用來證明唯一原文。
不可以。JOAAT 不是為抵抗攻擊而設計,不能用於密碼保護、簽章、驗證權限或防竄改用途。
須知
使用前了解適用範圍、結果限制與必要提醒。
不要把 JOAAT 用於密碼、金鑰衍生、簽章、存取權杖、防偽或任何需要抗碰撞、抗偽造能力的工作。
推薦
查找相關工具、專題與可用的 API 能力。