BrowserDevTools

雜湊、HMAC、AES-GCM 與 TOTP 工具箱

一頁五件事:摘要(批次處理,可搭 HMAC)、永遠不把檔案載入記憶體的串流檔案雜湊、附上熵判定的密碼與 API key 產生器、搭配 PBKDF2 且輸出能自我描述的 AES-GCM 加解密,以及即時 TOTP。不上傳任何東西,金鑰也永遠不離開你的裝置。

對應的命令列

printf '%s' 'hello world' | openssl dgst -sha256

已經幫你加好引號。做 HMAC 時金鑰是直接貼進去的——在真正的管線裡請改成從環境變數讀取,免得它留在 shell 的歷史紀錄裡。

全部都在這個分頁裡用 Web Crypto 執行;金鑰、密碼與檔案位元組永遠不離開你的裝置,也沒有分享連結。

摘要

#輸入摘要
1hello worldb94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
22026-09-22T12:00:00Zc5d27674c0790414d40f4876c94f5f69c3755e03c2e5702f65758566d250202d
3The quick brown fox jumps over the lazy …d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

位元組層級的工作,不來「上傳」那一套

搜尋其中任何一項——「sha256 generator」、「hmac generator」、「aes encrypt online」、「totp generator」——你都會得到一個動作一個頁面,每個頁面各自有一個輸入框。它們大多沒問題,也大多是在瀏覽器裡執行。真正缺的是轉換之外的所有東西:批次處理、對應的命令列、誠實的密碼強度判定,以及一條能解開加密框所產出內容的解密路徑。

所以這個頁面是編碼/解碼工具箱的搭檔,聚焦在需要位元組而不是字元的操作:

全部都在本機:雜湊、HMAC、PBKDF2、AES 與 TOTP 都透過 Web Crypto 與瀏覽器自身的基礎元件在你的分頁裡執行,你輸入的密鑰永遠不會經過網路——對一個輸入就是金鑰與 token 的頁面來說,這正是重點。兩個誠實的限制:這不是密碼管理器(產生出來的密碼有多安全,取決於你把它放在哪裡),而且它刻意不實作憑證解析、argon2 與 ChaCha20-Poly1305——自己發明密碼學不是功能,所以這裡的基礎元件都來自平台。

常見問題

把密鑰貼在這裡安全嗎?
這些值是在你的瀏覽器裡處理,永遠不會上傳——你可以自己在 Network 面板確認;雜湊或加密時什麼都不會送出。話說回來,任何貼到任何地方的值都請當成可能已經曝光:把正式環境的密鑰貼進任何網頁(包括這一個)之後,請把它輪替掉。
為什麼還提供 MD5 與 SHA-1?
因為它們仍然充斥在總和檢查檔、舊版 API 與 TOTP 種子裡。它們不具抗碰撞性,絕不能用於簽章或密碼儲存——工具會照實標示,而不是把它們藏起來,而預設是 SHA-256。
可以雜湊很大的檔案嗎?
可以,MD5/SHA-1/SHA-256/CRC32 沒問題:它們是以 1 MB 區塊增量計算,所以記憶體用量保持平穩,還會顯示進度。SHA-384 與 SHA-512 走瀏覽器的 Web Crypto 摘要,而那是一次性的,所以這兩個會把檔案讀進記憶體——頁面會在你挑選之前先告訴你。
加密後的輸出裡有什麼?
一個能自我描述的字串:版本、演算法、PBKDF2 迭代次數、鹽值、IV 與密文,每一項都是 base64url。這就是為什麼解密程式碼片段能用:它會從密碼與鹽值重新推導出金鑰,然後解密。GCM 會驗證密文,所以密碼錯誤與內容被竄改都會大聲失敗。
這裡的 TOTP 跟我手機上的驗證器 App 一致嗎?
它是 RFC 6238(HOTP 則是 RFC 4226),支援自動產生的 Base32 密鑰、六/八位數、30/60 秒週期與 SHA-1/256/512——跟每個驗證器用的參數一模一樣。密鑰太短會出現警告,驗證框也接受前後相鄰的時間窗,所以即將換號的驗證碼仍然驗得過。