用哈希比较两段文本

请输入要哈希的文本。

两段较长的字符串,只有摘要完全相同时才算一致。用相同算法分别对每段文本进行哈希,再比较两个较短的值即可。只要有一个字符、空格或换行不同,结果就会完全不同。

如何检查两段文本是否一致

  1. 1

    对第一段文本进行哈希

    粘贴第一段文本,保持 SHA-256 选中并生成。复制或记下摘要。

  2. 2

    用第二段文本重新开始

    将文本替换为第二个版本,并使用相同的算法。

  3. 3

    比较两个摘要

    如果 64 个字符完全相同,说明两段文本的字节一致。只要有任何字符不同,文本也就不同。

  4. 4

    必要时缩小范围

    如果不一致,请对两段文本的较小部分进行哈希,找出发生变化的段落。

为什么哈希是可靠的比较方式

优秀的哈希函数会将每个不同的输入映射为不同且不可预测的摘要。对于 SHA-256,目前没有已知的方法能找到两段不同文本具有相同摘要。因此,摘要相同在实际应用中就意味着内容相同。摘要又很短,你只需比较 64 个字符,而不必比较整页内容。

实例

文本 SHA-256
hello 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Hello 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

这两段文本只相差一个大写字母,但它们的摘要看不出任何相似之处。这使得即使是最细微的编辑也一目了然。

什么算作差异

比较是逐字节进行的。以下任何情况都会改变摘要:

  • 行尾多出的空格;
  • 文本末尾的换行;
  • 屏幕上看起来相同、实际是不同字符的引号或破折号;
  • 看起来相同但输入方式不同的带重音字母,例如字母加上独立的重音符号,与合成为单个字符。

如果两段文本看起来一样但摘要不同,最可能的原因就是这些看不见的差异之一。分别带上和去掉末尾换行进行哈希,很快就能找到原因。

选择算法

两段文本应使用相同的算法。SHA-256 是安全的默认选择。MD5 和 SHA-1 也能发现普通的差异,但如果有人可能刻意构造碰撞,就不应使用。CRC32 更短,但在大规模数据上较弱。

请注意,本工具会在完整列表中显示你所哈希文本的所有摘要,因此一次操作就能比较多种算法。

实用工作流程

把原始文本的摘要保存在笔记或工单中。当新版本送来时,用相同算法进行哈希并比较。这种方法很适合配置片段、合同条款、法律文字和模板文本等需要证明内容未被更改的场景,而不是要列出所有改动。

摘要不同时

不要先假定内容有误。先检查常见原因:复制的文本可能带有末尾空格、不同的换行风格,或来自网页或文字处理软件的隐藏字符。用相同的方式清理两个版本后再进行哈希。如果摘要仍然不同,就把每段文本拆分成段落,逐段哈希,并成对比较,直到找出发生变化的那一段。

常见问题

使用 SHA-256 或 SHA-512 时,实际应用中可以认为是一样的。使用 MD5、SHA-1 或 CRC32 时,哈希一致是意外错误的有力证据,但不足以防范蓄意构造的碰撞。

重要。相同的行如果顺序不同,字节顺序也不同,因此摘要会不同。

不能。它一次只对一段文本进行哈希,你需要自己比较摘要。它也不会高亮显示差异。

算。Hello 和 hello 的摘要不同。如果大小写不重要,请先把两段文本统一为相同的大小写。

相关工具

此工具还提供其他语言版本

使用指南与应用场景