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 256
th 位置)。
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)