【发布时间】:2015-02-28 23:17:23
【问题描述】:
所以这是一些过去可以自己工作的代码,但是当我尝试将它实现到我的代码中时,它给了我一个错误,我认为这是因为我改变了 s2 内部的位,还有其他的吗没有 binascii.a2b_qp 的 XOR s3 方法
def xor(s1,s2):
s3 =''.join(chr(i^j) for i,j in zip(s1,s2))
s4 = binascii.a2b_qp(s3)
s5 = ''.join(chr(i^j) for i,j in zip(s2,s4))
print(s5)
# for testing:
# additional info, s1 is a mutated form of bits from s2 using an S box
s1 = b'\xc3\xbf\x00\x00\xc3\xbf\x00\xc3\xbf\x00\x00'
s2 = b'aaaaaaaa'
xor(s1, s2)
追溯:
Traceback (most recent call last):
File "C:\Users\Pavilion g7\workspace\Python Network\RW.py", line 138, in <module>
x= xor(m1,m2)
File "C:\Users\Pavilion g7\workspace\Python Network\RW.py", line 69, in xor
s4 = binascii.a2b_qp(s3)
ValueError: string argument should contain only ASCII characters
【问题讨论】:
-
你给它什么输入触发了这个错误?
-
如果您可以显示整个错误跟踪,而不仅仅是错误消息,将会更有帮助。
-
@Newbie 之前的代码是在 Python 2 上,现在你在 Python 3 上使用它吗?
chr的行为在两个版本之间发生了变化;在 Python 3 中,它返回一个str(即 unicode)。 -
等等,
i^j,你是在异或两个字符串吗?这还有效吗? -
不,我从一开始就在使用 python 3,下面是我在其他地方实现的代码
标签: python python-3.x xor bits