-2

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
4

3 回答 3

1

它使用提供的长度为 256 字节的密钥,mipText使用简单的 XOR 密码加密(或解密,没关系) 。keys

keys[i & 0xFF]是适当的密钥字节(位于keysi mod 256th 位置)。

encryptedChar ^ keys[i & 0xFF]i将原始mipText字符串的第 th 字节与适当的密钥字节进行异或。

mipText[i] = encryptedChar ^ keys[i & 0xFF]用字节的加密版本替换i原始字符串的第 th 个字节。mipText

请注意,作为XOR产生原始结果的两种应用,该算法是对称的:如果提供原始字符串,它会对其进行加密;如果提供了一个加密的字符串,它会解密它。

于 2012-08-15T05:14:09.173 回答
1

它根据文件的内容创建一个列表

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

然后它将每个索引与键中的值进行异或(例如 0b010101 ^ 0b110011 = '0b100110')

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

于 2012-08-15T05:16:07.220 回答
0
 keys[i & 0xFF]

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

然后将该值与相关的加密字符进行异或运算 (^ = XOR)

于 2012-08-15T05:16:17.463 回答