Pythonで16進数をXORするにはどうすればよいですか?たとえば、XORを実行したい場合'ABCD'
、'12EF'
答えは。になります'B922'
。
以下のコードを使用しましたが、間違った結果になります。
# xor two strings of different lengths
def strxor(a, b):
if len(a) > len(b):
return "".join(["%s" % (ord(x) ^ ord(y)) for (x, y) in zip(a[:len(b)], b)])
else:
return "".join(["%s" % (ord(x) ^ ord(y)) for (x, y) in zip(a, b[:len(a)])])
key = '12ef'
m1 = 'abcd'
print(strxor(key, m1))