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
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
它使用提供的长度为 256 字节的密钥,mipText使用简单的 XOR 密码加密(或解密,没关系) 。keys
keys[i & 0xFF]是适当的密钥字节(位于keys第i mod 256th 位置)。
encryptedChar ^ keys[i & 0xFF]i将原始mipText字符串的第 th 字节与适当的密钥字节进行异或。
mipText[i] = encryptedChar ^ keys[i & 0xFF]用字节的加密版本替换i原始字符串的第 th 个字节。mipText
请注意,作为XOR产生原始结果的两种应用,该算法是对称的:如果提供原始字符串,它会对其进行加密;如果提供了一个加密的字符串,它会解密它。
它根据文件的内容创建一个列表
例如。解压后的“Hello Word”变成[72,101,108,108,111,32,87,111,114,108,100]
然后它将每个索引与键中的值进行异或(例如 0b010101 ^ 0b110011 = '0b100110')
i&0xFF只是确保键的索引永远不会大于 0xff (255) ...基本相同,i%256只是更快
keys[i & 0xFF]
返回 256 字节密钥字符串的第 i 个值。
然后将该值与相关的加密字符进行异或运算 (^ = XOR)