雜湊產生器
在你的機器上計算的真實摘要:MD5、SHA-1、SHA-256、SHA-384、SHA-512 和 HMAC-SHA-256,可處理輸入的文字或拖入的檔案。這正是 AI 對話最不擅長的活——讓聊天機器人算雜湊,它會編出一個看起來完美、卻與任何東西都不匹配的字串,因為它是在預測文字而不是計算。這裡演算法是真的在執行,檔案從不上傳,答案是算出來的摘要,而不是猜測。
- MD5
- —
- SHA-1
- —
- SHA-256
- —
- SHA-384
- —
- SHA-512
- —
- HMAC-SHA-256
- 輸入金鑰,計算上方文字或檔案的 HMAC。
為什麼算出來的雜湊和編出來的雜湊長得一模一樣
雜湊是一種有個奇特屬性的指紋:輸入改動一個位元,輸出大約有一半位元翻轉。雜湊空間裡沒有「接近」一說,沒有任何模式可供文字預測器依附——對一個沒有真正執行過演算法的模型來說,SHA-256 的 64 個十六進位字元與隨機數無從區分。於是聊天機器人只能做它唯一會做的事:產生 64 個看起來隨機的十六進位字元,格式完美,內容全錯。有人把這種編造寫進過發布說明、驗證指南和事故報告,因為這串字元看起來毫無破綻。防禦辦法無聊但徹底:絕不接受任何無法展示計算過程的來源給出的摘要。本頁面的計算過程在構造上是透明的——MD5 是照著 RFC 1321 公開實作的(WebCrypto 有意不提供 MD5,所以提供 MD5 的頁面要麼自己寫了,要麼在造假),SHA 家族透過瀏覽器自身的 WebCrypto 執行,拖入的檔案用本機 File API 讀取並就地計算。任何內容都不上傳,這一點很重要,因為人們拿來算雜湊的檔案往往正是敏感檔案:保密協議下的韌體映像、資料庫傾印、正式主機上的那個確切二進位檔。
另外兩個鄰居工具補齊了這一組。如果你手裡有一個雜湊,問題是「這是用什麼算的?」,雜湊識別器會讀取它的長度、字母表和前綴並列出候選——誠實地,包括那些僅憑形狀無法區分的。而另一個經典混淆是可逆與單向的區別,文章 Base64 不是加密 區分了編碼(可逆、無金鑰)、加密(可逆、有金鑰)和雜湊(單向、無金鑰)——這三個概念的混淆寫滿了外洩報告。如果要檢查的是線上伺服器的憑證而不是檔案,SSL 憑證檢查和 SSL 評級負責同一工作的網路側。
常見問題
AI 聊天機器人不能直接幫我算雜湊嗎?
它能遞給你一個看起來完全像雜湊的字串——SHA-256 的 64 個自信的十六進位字元——而那個字串將是編造的。語言模型不計算摘要;它預測文字,而雜湊恰恰是「看起來合理」和「正確」毫無交集的那種文字。它也無法對它讀不到的檔案算雜湊。本頁面在你自己的機器上計算真實摘要,用的演算法與你的作業系統相同——如果輸入是檔案,檔案不會離開瀏覽器。主打文章 不要讓聊天機器人碰你的金鑰 逐一講解了三種失敗模式。
MD5 都已經被攻破了,為什麼這裡還有它?
因為世界上還在發布 MD5 校驗和。廠商下載頁、遺留系統、舊資料庫傾印和十年的論壇文章都把 MD5 當指紋用,而拿下載檔案去比對它公布的 MD5,就需要產生一個真實的 MD5——WebCrypto 拒絕做這件事,所以本頁面的實作是照 RFC 1321 寫的,並以 RFC 自帶的測試向量釘死。抗碰撞被攻破意味著它不能用於安全決策;但這並不抹掉存量。用它驗證遺留指紋,絕不要用它保護任何新東西。
什麼是 HMAC,為什麼它需要金鑰?
普通雜湊證明一條訊息與某個摘要匹配;它不證明是誰產生的,因為任何人都能對任何東西算雜湊。HMAC 把金鑰混入構造之中,於是摘要同時驗證了寄件者——webhook 和簽名 API 請求就是這樣自證的。在這裡輸入相同的文字和金鑰,你會得到你的程式碼應該產生的值,全程本機計算,正式環境的 webhook 金鑰永遠不必為了偵錯而貼進對話或陌生人的伺服器。
應該用這些演算法來雜湊密碼嗎?
不應該。這些是快速的通用摘要,而「快」恰恰是密碼雜湊最不能要的——攻擊者用 GPU 每秒能試幾十億次。密碼屬於 bcrypt、scrypt 或 Argon2,它們被故意設計得很慢並帶鹽。如果你有一個雜湊、想知道它是什麼產生的,雜湊識別器會讀取它的形狀;如果你需要一個新密碼,密碼產生器會在本機產生。
十六進位大寫還是小寫,有區別嗎?
對摘要本身沒有:十六進位只是一種記法,A-F 與 a-f 是排版問題。對比較有區別,因為逐位元組的字串比較會把同一個雜湊判成不同。這個開關會一次性重寫所有輸出,讓你能對齊所比對校驗和的格式——多數 Unix 工具輸出小寫,一些 Windows 工具輸出大寫。