在 Python 中创建 XOR 密钥

Creating a XOR key in Python

这与 encryption/decryption 有关。我有一个原始字符串,我从中创建了字符列表。

['f', 'i', 'r', 's', 't', ' ']

我已将原始字符串加密到第二个列表中。

['h', '=', 'g', 'l', 'x', 'k']

我需要做的是创建一个 XOR 密钥,以便 encrypted list ^ XOR key = original list

如何创建 XOR 密钥(列表)以实现此目的?

我可能离这里很远...

>>> original = ['f', 'i', 'r', 's', 't', ' ']
>>> xored = ['h', '=', 'g', 'l', 'x', 'k']
>>> key = [chr(ord(a) ^ ord(xored[i])) for i, a in enumerate(original)]
>>> key
['\x0e', 'T', '\x15', '\x1f', '\x0c', 'K']
>>> [chr(ord(a) ^ ord(xored[i])) for i, a in enumerate(key)]
['f', 'i', 'r', 's', 't', ' ']
>>> [chr(ord(a) ^ ord(key[i])) for i, a in enumerate(original)]
['h', '=', 'g', 'l', 'x', 'k']

将原始元素的序号与键的相应索引序号进行异或运算,得到异或后的版本。

编辑
由于您似乎在尝试对列表本身进行异或运算,因此您可以这样做

class XOR(list):

    def __xor__(self, other):
        return map(chr, [ord(x[0]) ^ ord(x[1]) for x in zip(self, other)])


l = XOR(['f', 'i', 'r', 's', 't', ' '])
print(l ^ ['\x0e', 'T', '\x15', '\x1f', '\x0c', 'K'])