是什么原因导致这两个看似相同的文件有不同的哈希值?

是什么原因导致这两个看似相同的文件有不同的哈希值?

我无法弄清楚为什么以下两个文件会产生不同的哈希值(SHA1、CRC32、SHA384 等等):

https://cdn.jsdelivr.net/npm/[电子邮件保护]/dist/jsonify-error.js

https://cdn.jsdelivr.net/npm/[电子邮件保护]/dist/jsonify-error.js

到目前为止,我尝试了几种差异实用程序,但它们都声称文件是相同的。

我下载了两个文件,并用 Sublime Text 3 和 Visual Studio Code 对它们进行了检查,它们似乎都是 UTF-8、CRLF,但当我打开第一个文件并按下 Ctrl+S(不做任何更改!)时,它的哈希值就会变为与第二个文件相同。

这里发生了什么事?

编辑以澄清:我想知道文件之间有什么不同。我知道这是带有空格字符或行尾的东西,但是什么?哪一行?在哪里?哪个字符?

答案1

v1.2.1 中的第 1 行以 linux EOL 结束,而 ver 1.2.2 中的同一行以 windows 行结尾。
(Linux 使用 0x0A 字符作为行分隔符,而 Windows 使用 0x0D,0x0A)

3、4、59、60 和 61 行也同样如此。

用于发现该问题的工具是 WinMerge。

答案2

在十六进制编辑器中查看:一个文件使用 0x0a (LF) 来标记行尾,另一个文件使用 0x0d0a (CR/LF)。使用以下工具记事本++将文件更改为相同的换行约定, 如果你必须。

2 个文件的十六进制视图

相关内容