Hash 產生器解決的是什麼問題?
這個 Hash 產生器會把輸入框中的精確文字轉換成固定長度的十六進位摘要。它適合用於內容一致性比對、完整性驗證、API 簽章前摘要準備,或者產生某個系統明確要求的 SHA 結果。需要先明確的是,摘要不是加密後的文字,不能再「解密」回原文。
SHA 摘要是如何產生的
SHA 演算法會先把訊息變成位元組序列,再按規則填充成固定大小的分組,並透過位元運算反覆把每個分組壓縮進內部狀態。輸入只要發生很小變化,輸出也應明顯不同,這就是摘要適合做比對、卻不適合做可還原儲存的原因。SHA-224 屬於 SHA-2,它使用 SHA-256 的壓縮結構,但初始值不同,最終只輸出前 224 位摘要。
- SHA-1 輸出 160 位摘要,由於已經存在實際碰撞攻擊,今天主要只適合歷史相容。
- SHA-224 與 SHA-256 都使用 512 位訊息分組和 32 位運算,但輸出長度與初始值不同。
- SHA-384 與 SHA-512 使用 1024 位分組和 64 位運算,摘要更長,常見於要求更嚴格的相容策略。
如何使用這個工具
- 先根据相容性或完整性校验需求选择合适的 SHA 算法。
- 粘贴要計算摘要的精确文字后,重点確認空白字元和换行是否一致。
- 確認算法、輸出大小写和源内容字节级一致后,再複製摘要结果。
更可靠的文字摘要流程
Hash 看起來只是點一次執行按鈕,但多數錯誤結果都來自選錯演算法,或者輸入內容與預期文字有一個不顯眼的差異。更穩妥的做法是把演算法名稱、輸入位元組和輸出格式看成一組必須同時成立的證據。
- 先確認下游系統要求的演算法,再貼上文字。
- 保持待摘要文字與目標內容完全一致,包括空格、定位字元、標點和末尾換行。
- 產生摘要後,同時核對長度和完整十六進位字元,不要只看開頭幾位。
經典範例:文字 `abc`
短字串 `abc` 是很適合用來核對實作的測試樣本,因為許多 SHA 實作都會公開同一組已知摘要。它也能直觀說明:演算法名稱不能混用,同樣的輸入在 SHA-224 和 SHA-256 下會得到不同長度、不同內容的結果。
`abc` 的已知摘要
輸入:
abc
SHA-224:
23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7
SHA-256:
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adWeb Crypto 摘要計算最小範例
const bytes = new TextEncoder().encode("abc");
const digest = await crypto.subtle.digest("SHA-256", bytes);實作說明
瀏覽器 Web Crypto 的 `crypto.subtle.digest()` 原生暴露 SHA-1、SHA-256、SHA-384 和 SHA-512。由於該 API 不暴露 SHA-224,本工具會在本機使用 SHA-256 同族實作計算 SHA-224。
這個工具適合用在哪些場景
當來源內容是文字,並且下一步需要一個 SHA 摘要時,就適合使用這個工具。典型場景包括比對複製出來的 payload、確認設定文字是否變化、準備 API 簽章流程中的摘要部分,以及重現另一個系統使用的類校驗和值。
常見使用場景
Hash 產生器 最適合用在需要做 SHA 系列摘要比对的文字内容需要快速变成所选算法对應的固定长度十六进制摘要的場景,尤其是文字完整性校验、類校验和值比对、發布記錄、API 签名前准备和跨系統摘要核对。
- 用于產生 SHA-1、SHA-224、SHA-256、SHA-384 或 SHA-512 哈希,服务于文字完整性校验、類校验和值比对、發布記錄、API 签名前准备和跨系統摘要核对。
- 處理重要輸入前,可先用示例流程確認算法选择、大小写比对、精确輸入字节、空白字元,以及 SHA-1 是否只用于相容。
- 当结果符合目標流程后,再複製或下载所选算法对應的固定长度十六进制摘要。
哈希校验在实务里最容易失败的地方
哈希校验最常见的失败,不是因為算法坏了,而是因為团队比对了错误的字节、错误的算法,或者错误地假设了文字规范化方式。很多时候檔案看起来一样、字元串看起来一样,但只要换行、空白、BOM 或编码不同,结果就会彻底变化。所以頁面輸出有价值的前提,是你先把“輸入字节”“輸出算法”“目標比对标准”三件事对齐。
- 在开始比对之前,先確認目標系統要求的到底是哪一种算法。
- 如果源内容是複製来的文字,就應保留原始檔案或原始字节来源,以防無形细节在複製时已经丢失。
- 新的信任敏感流程應優先选更强的 SHA 变体,较弱方案只保留在相容場景中。
導致 SHA 結果看起來不對的常見誤區
當摘要比對不上時,演算法實作本身通常不是最先應該懷疑的對象。實際工作裡,更常見的原因是輸入裡有不可見差異、字元編碼不同、複製時帶上了包裝文字,或者下游系統實際使用的是另一個 SHA 變體。
- 末尾多一個換行或空格也是輸入內容的一部分,會改變摘要。
- 不要把 SHA-1 用在新的安全敏感設計裡,只有舊協定明確要求時才保留。
- 不要把快速 SHA 摘要當成密碼儲存方案;密碼儲存需要帶鹽和成本參數的慢速密碼雜湊方案。
Hash 能證明什麼,不能證明什麼
Hash 擅長回答的是「這份內容和那份內容是不是同一份位元組」,而不是「這是誰發的」「它是不是保密過」「它是否天然可信」。如果你要證明來源身分或防止竄改,還需要簽章、認證鏈路或傳輸保護一起運作。
本工具支援的 SHA 演算法對比
| 演算法 | 摘要長度 | 常見角色 | 關鍵提醒 |
|---|---|---|---|
| SHA-1 | 160 位 / 40 個十六進位字元 | 歷史相容 | 不適合作為新的安全選擇 |
| SHA-224 | 224 位 / 56 個十六進位字元 | 需要 224 位輸出的 SHA-2 相容場景 | 比 SHA-256 少見,使用前應確認下游確實要求它 |
| SHA-256 | 256 位 / 64 個十六進位字元 | 現代通用摘要校驗 | 很多系統裡的預設首選 |
| SHA-384 | 384 位 / 96 個十六進位字元 | 更嚴格策略下常見的 SHA-512 同族截斷輸出 | 按下游系統要求選擇 |
| SHA-512 | 512 位 / 128 個十六進位字元 | 長摘要輸出和 SHA-512 同族相容 | 僅在下游系統需要長摘要時選擇 |
使用注意
- 複用所选算法对應的固定长度十六进制摘要前,先檢查算法选择、大小写比对、精确輸入字节、空白字元,以及 SHA-1 是否只用于相容。
- 哈希是单向摘要,不是加密;安全敏感的完整性校验應使用 SHA-256 或更强算法。
- 当结果会影响生产工作或客户可见内容时,應保留原始需要做 SHA 系列摘要比对的文字内容以便回退和核对。
Hash 產生器 參考說明
Hash 產生器 會說明摘要演算法、完整性驗證用途,以及哈希為什麼不是加密。
- SHA 系列哈希會把訊息切成固定大小的分組,逐輪壓縮進內部狀態,最後輸出固定長度的摘要。
- SHA-1 使用 512 位分組並輸出 160 位摘要,但由於已經存在成熟碰撞攻擊,現在只應保留在相容場景中。
- SHA-256 同樣基於 512 位分組和 32 位運算;SHA-384 與 SHA-512 則基於 1024 位分組和 64 位運算,其中 SHA-384 本質上是帶不同初始值的截斷版 SHA-512。
- 哈希不能被解密,只能與已知摘要進行比較。
參考資料
常見問題
以下問題圍繞 Hash 產生器 的實際用途整理,重點說明輸入要求、輸出結果與常見限制。在本機產生 SHA-1、SHA-224、SHA-256、SHA-384 或 SHA-512 摘要。
在 Hash 產生器 里應该选哪种算法?
只要完整性要求重要,優先选择 SHA-256 或更强算法。只有下游系統明确要求 224 位 SHA-2 輸出时才选择 SHA-224;SHA-1 则只應保留给历史相容。
為什么看起来一样的文字,在 Hash 產生器 里算出来的摘要会不同?
因為哈希處理的是精确字节,换行符、首尾空格、隐藏字元和檔案编码都会影响最終摘要。
Hash 產生器 產生的摘要可以被“解密回来”吗?
不能。哈希是单向摘要。更实际的用法是把新產生的摘要與已知正确值做比对。
Hash 產生器 最適合處理什麼樣的需要做 SHA 系列摘要比对的文本内容?
Hash 產生器 的核心用途是產生 SHA-1、SHA-224、SHA-256、SHA-384 或 SHA-512 哈希。当需要做 SHA 系列摘要比对的文字内容需要快速变成所选算法对應的固定长度十六进制摘要,并继续用于文字完整性校验、類校验和值比对、發布記錄、API 签名前准备和跨系統摘要核对时,它最有价值。
複用 Hash 產生器 產生的所选算法对应的固定长度十六进制摘要前,最該檢查什麼?
應優先檢查算法选择、大小写比对、精确輸入字节、空白字元,以及 SHA-1 是否只用于相容。這些细节最能直接判断结果是否已经適合继续交给下游流程。
Hash 產生器 產生的所选算法对应的固定长度十六进制摘要通常會被帶到哪裡繼續使用?
最常见的下一步就是用于文字完整性校验、類校验和值比对、發布記錄、API 签名前准备和跨系統摘要核对。這類輸出是按真实交接場景来组织的,不是泛化占位结果。
什麼時候不應該直接相信 Hash 產生器 的結果,而要人工複核?
哈希是单向摘要,不是加密;安全敏感的完整性校验應使用 SHA-256 或更强算法。