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
答案 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)
对该值进行异或