请解释一下这个python代码

时间:2012-08-15 05:08:45

标签: python python-2.7

mipText 是任何二进制字符串

喜欢:(48,34,65,168,91,nn)

请在下面解释我的代码

def test(mipText,keys):
    mipText = list(mipText)
    for i, encryptedChar in enumerate(mipText):
        mipText[i] = encryptedChar ^ keys[i & 0xFF]
    return mipText

3 个答案:

答案 0 :(得分:1)

使用提供的mipText密钥以{256}字节加密keys keys[i & 0xFF]加密(或解密,无关紧要)。

keys是相应的关键字节(位于i mod 256位置的encryptedChar ^ keys[i & 0xFF]。)

i使用适当的密钥字节对原始mipText字符串的mipText[i] = encryptedChar ^ keys[i & 0xFF]字节进行异或。

i将原始mipText字符串的XOR字节替换为字节的加密版本。

注意,当{{1}}的两个应用程序产生原始结果时,算法是对称的:如果提供了原始字符串,则对其进行加密;如果提供了加密字符串,它会对其进行解密。

答案 1 :(得分:1)

它会从文件内容中创建一个列表

例如。 解包后的“Hello Word”变为[72,101,108,108,111,32,87,111,114,108,100]

然后XORS每个索引都有一个来自key的值(例如0b010101 ^ 0b110011 ='0b100110')

i&0xFF只是确保键的索引永远不会大于0xff(255)...基本上与i%256基本相同只是更快

答案 2 :(得分:0)

 keys[i & 0xFF]

返回256字节密钥字符串的第i个值。

然后使用相关的加密字符(^ = XOR)

对该值进行异或