【发布时间】:2011-11-28 20:28:38
【问题描述】:
尝试做一个 MD5 冲突作业问题,但我不确定如何在 Python 中编写原始字节。我试了一下,但最终得到了一个包含 ASCII 的 .bin 文件。这是我的代码:
fileWriteObject1 = open("md5One.bin", 'wb')
fileWriteObject2 = open("md5Two.bin", 'wb')
fileReadObject1 = open('bytes1.txt', 'r')
fileReadObject2 = open('bytes2.txt', 'r')
bytes1Contents = fileReadObject1.readlines()
bytes2Contents = fileReadObject2.readlines()
fileReadObject1.close()
fileReadObject2.close()
for bytes in bytes1Contents:
toWrite = r"\x" + bytes
fileWriteObject1.write(toWrite.strip())
for bytes in bytes2Contents:
toWrite = r"\x" + bytes
fileWriteObject2.write((toWrite.strip())
fileWriteObject1.close()
fileWriteObject2.close()
样本输入: d1 31 dd 02 c5 e6 ee c4 69 3d 9a 06 98 af f9 5c 2f 约 b5
我有一个指向我的输入文件的链接,但似乎是一个 mod 删除了它。这是一个文件,每行都有一个用 ASCII 写的十六进制字节。
编辑:已解决!感谢 Circumflex。
我有两个不同的文本文件,每个文件都有 128 字节的 ASCII。我将它们转换为二进制文件并使用strike.pack 编写它们,结果发生了MD5 冲突。
【问题讨论】:
-
您的输入实际上是什么样的? (从技术上讲,没有“ASCII 字节”之类的东西,但是有很多方法可以使用 ASCII 字符来表示任意字节。你应该指定你在说的是哪一种)
-
我有一个指向我的输入文件的链接,但似乎是一个 mod 删除了它。这是一个文件,每行都有一个用 ASCII 写的十六进制字节。
-
因此您需要将每对字符转换为一个字节,并将它们写入文件。要开始使用,请尝试
int("d1", base=16)。 -
int 占用的空间不是比字节多吗?
-
@advocate(3 cmets 以上):不是版主,只是普通用户的编辑,可能碰巧出现在错误的时间。 (顺便说一句,无需编辑您的问题以包含答案)