这与加密/解密有关。我有一个原始字符串,我已经创建了字符列表。
['f', 'i', 'r', 's', 't', ' ']
我已将原始字符串加密到第二个列表中。
['h', '=', 'g', 'l', 'x', 'k']
我需要做的是创建一个XOR键,以便encrypted list ^ XOR key = original list
如何创建XOR密钥(列表)以实现此目的?
答案 0 :(得分:2)
我可能会离开这里......
>>> 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']
对原始中每个元素的序数进行异或,并使用键的相应索引序号为您提供xored版本。
修改强>
由于您似乎试图对列表本身进行xor,因此可以执行此操作
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'])