如何使用十六进制在python中xor

时间:2015-01-20 02:29:59

标签: python cryptography xor

Supossing我有一个ascii文本“Hello World”和一个十六进制字符串,我怎么能在python中对它们进行xor?

我知道两个字符串必须采用相同的格式,但我不知道如何实现它。

1 个答案:

答案 0 :(得分:1)

根据“十六进制字符串”的具体含义,它应该很容易。 E.g:

>>> text=b'Hello World'
>>> hexi=b'\12\34\45\EF\CD\AB'
>>> xors=[ord(t)^ord(x) for t,x in zip(text,hexi)]
>>> xors
[66, 121, 73, 48, 42, 102, 11, 44, 54, 48, 37]

现在你必须决定如何表示这个小整数列表。 array.array最好,或者作为字节串:

>>> b''.join(chr(x) for x in xors)
'ByI0*f\x0b,60%'

(这将在Python 3中以前导b显示,其中字节字符串和实际文本之间的区别更清晰,更清晰,但我在此处显示的所有代码在Python 2和3中的工作方式相同)。