在此任务中,我们将生成两个不同但有相同 MD5 哈希值的文件。这两个文件的开头部分是相同的,即它们有相同的前缀。我们可以使用 md5collgen 程序来实现此目的,该程序允许我们提供具有任意内容的前缀文件。下图说明了程序的工作方式。以下命令为给定的前缀文件 prefix.txt 生成两个输出文件 out1.bin 和 out2.bin:
$ md5collgen -p prefix.txt -o out1.bin out2.bin

我们可以使用 diff 命令检查输出文件是否不同,还可以使用 md5sum 命令来检查每个输出文件的 MD5 哈希值。请参考以下命令。
$ diff out1.bin out2.bin
$ md5sum out1.bin
$ md5sum out2.bin
由于 out1.bin 和 out2.bin 都是二进制文件,我们不能使用文本查看程序( 例如 cat 或 more)查看它们。我们需要使用一个二进制编辑器来查看(和编辑)它们。我们已经在虚拟机中安装了一个名为 bless} 的十六进制编辑器。请使用这样的编辑器查看这两个输出文件,并描述你观察到的现象。另外,你还应该回答下面的问题:
- 问题 1。如果前缀文件的长度不是 64 的倍数,会发生什么?
- 问题 2。创建一个恰好有 64 个字节的前缀文件,再次运行碰撞工具,看看会发生什么?
- 问题 3。在这两个文件中, md5collgen 生成的 128 字节数据是完全不同的吗?请找出所有不同的字节。