如何Verify Data Integrity 具有 Hashes
Use hash comparison 到检测任何改变在 数据, 是否 accidental corruption 或 intentional tampering.
问题
你需要confirm 该数据有 不 changed 自 known-good 声明, using 之前 recorded hash.
前置条件
- Understanding 的 hash 函数
- Ability 到存储和 检索 hash 值
步骤
-
1. Record the baseline hash
Compute a hash (SHA-256 recommended) of the data in its known-good state. Store this hash in a secure, separate location. The hash serves as a compact fingerprint of the original data.
输入original file输出SHA-256: a1b2c3... -
2. Re-hash the current data
At a later time, compute the hash of the data again using the same algorithm and encoding. Any change — even a single bit — will produce a completely different hash due to the avalanche effect.
输入current file输出SHA-256: d4e5f6... -
3. Compare and interpret
If the hashes match, the data is unchanged. If they differ, the data has been modified. For accidental corruption (e.g., disk errors), this detects the problem. For intentional tampering, the hash must be stored somewhere the attacker cannot modify.
输入a1b2c3... == d4e5f6...?输出DIFFERENT — data changed
预期结果
definitive 是/否答案开 是否数据有 changed 自 baseline hash 是 recorded.
常见错误
- Using a weak hash like CRC32 for security
- CRC32 detects accidental corruption but is trivial to collide. Use SHA-256 for tamper detection.
- Storing the hash next to the data
- If an attacker can modify the data, they can also recompute and replace the hash. Store the hash in a separate, trusted location.
排障指引
- If hashes differ unexpectedly, check for encoding or line-ending changes before assuming corruption.
- Use a hash comparison tool that shows both values for easy inspection.
安全限制
- Hash comparison detects changes but cannot identify what changed. For that, use a diff tool.
- All hashing is local.