在Python中创建XOR密钥

时间:2017-07-22 18:14:44

标签: python encryption xor

这与加密/解密有关。我有一个原始字符串,我已经创建了字符列表。

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

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

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

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

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

1 个答案:

答案 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'])