SheepDev

雜湊、ID與隨機數

CRC 一致就安全嗎?

使用工具

檔案旁八位十六進位與本機計算一致,容易讓人以為安全,但 CRC32 不證明作者或無害。它有助排查誤配與損壞。先用已知短輸入核對演算法,再明確比較能證明什麼。

用 123456789 核對 CRC 變體

不含末尾換行的檢查字串
123456789
CRC-32/ISO-HDLC: cbf43926

僅輸入九個字元 123456789,不加範例標籤或換行,CRC-32/ISO-HDLC 得 cbf43926。其他 CRC32 變體對同位元組可能不同,不能只憑 CRC32 名稱統一參數。

八位十六進位表示三十二位元。保留前導零便於比較。字母大小寫不改數值,但缺位或演算法不同不能當作大小寫差異。

比較位元組而非文字外觀

123456789 後加 LF 就是另一位元組串,CRLF 又不同。文字按 UTF-8 編碼,檔案則使用實際位元組。編碼、BOM、末尾換行可改變外觀相同的文件,應先查來源、長度與位元組約定。

刪換行後匹配,不證明原檔案正確。發布檔案的位元組檢查不同於文字含義比較。應對原始產物位元組計算,不能為匹配而任意正規化。

不同檔案也可能具有相同 CRC

CRC32 只有 2³² 種輸出,檔案可能性更多,碰撞不可避免。它不是抵禦故意竄改的密碼學驗證,匹配不能擴展為輸入絕對相同或無惡意改變的證明。

同演算法同對象前提下,不一致表示存在差異,但不指出位置、原因或誰正確。應查版本、轉換、誤取檔案。校驗值是排查入口,不是修復資料。

確認來源還要看參考值從何取得

即使 SHA-256,預期摘要也需可信來源。攻擊者同時替換檔案與參考值時,匹配不驗證發布者。簽章產物需適當金鑰與流程驗證,CRC32 或單純 SHA 計算不會替代。

CRC32 與 SHA 都不加密檔案,沒有反向轉換按鈕不等於保密。不要把 CRC32 用於密碼儲存或授權。校驗和、雜湊、簽章即使外觀相似也職責不同。

記錄結果時附對象與演算法

除檔名,還記版本、位元組數、CRC 變體、預期值來源與結果。「該版本產物的 CRC-32/ISO-HDLC 與發布紀錄一致」比「安全」更準確且可重現。

參考資料

使用工具

指南 →