python - 如何在Python中使用十六进制进行异或

标签 python cryptography xor

假设我有一个 ascii 文本“Hello World”和一个十六进制字符串,我如何在 python 中对它们进行异或?

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

最佳答案

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

>>> 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)。

关于python - 如何在Python中使用十六进制进行异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036818/

相关文章:

algorithm - 我应该如何格式化数字签名?

python - matplotlib 设置 yaxis 标签大小

cryptography - ComputeHash 在计算时是否依赖于机器 key ?

javascript - 使用 CryptoJS 解密 openssl_seal 中的密文

java - 为什么这条语句在java中不起作用 x ^= y ^= x ^= y;

javascript - 为什么单行 XOR 交换在 Javascript 中不起作用但在 C++ 中起作用?

c - 对一个非常大的文件进行 XOR

Python - 异步日志记录

python - 交织两个数据帧

python - 如何使用 python 脚本从一台远程服务器连接到另一台远程服务器?