我试图用Python和AES密码解密一个图像文件。我们得到了一个15字节的密钥,我们的工作是解密通过第一个字节运行的图像。在
到目前为止我得到的是:
fifteenbytes = b'\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c'
for i in range(0, 256):
ipack = pack('B', i)
key = ipack + fifteenbytes
我希望我能得到钥匙,就像:
^{pr2}$对于迭代0-255,但我最终得到:
b'\x00~\x15\x16(\xae\xd2\xa6\xab\xf7\x15\x88\t\xcfO<'
或者有时退出字符和ascii值,例如:
b'\t~\x15\x16(\xae\xd2\xa6\xab\xf7\x15\x88\t\xcfO<'
b'%~\x15\x16(\xae\xd2\xa6\xab\xf7\x15\x88\t\xcfO<'
有人能解释一下为什么会这样吗?在
您得到的输出是正确的,但是您似乎被
bytes
值的repr()
输出弄糊涂了。在Python提供了一个可以安全地复制并粘贴回Python会话的值。这有助于调试。此显示在可能的情况下使用ASCII可打印文本来表示值,但可以使用所显示的内容精确地再现该值。在
期望值
b'\x00\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c'
包含几个可打印的ASCII字符,因此Python显示这些字符而不是\xhh
字节值:bytestring仍然是16字节长:
^{pr2}$~
是ASCII码位126,或十六进制的0x7E:这同样适用于}(制表符转义序列)、},以及{}和{}。在
\x28
和(
、\x09
和{\x4f
和{\xhh
转义序列只是bytes
对象文本中的符号,用于定义给定的字节值,但是您可以使用~
生成完全相同的值。同样,对于\t
,您可以表示与\x09
相同的值,但是Python在显示表示时更喜欢使用\t
序列。在相关问题 更多 >
编程相关推荐