Python XOR解密仅解密一半的RGB图像

时间:2018-12-13 20:20:21

标签: python python-3.x numpy encryption rgb

我正在尝试使用提供的密钥对Python中的加密图像进行XOR解密。 我已经能够解密一半的图像,而且我不明白为什么下半部分也不能解密。

string MyNewFile;
using (StreamWriter sWriter = new StreamWriter(MyNewFile, false, encoding, 1))
{
    using (StreamReader sReplaceReader = new StreamReader(myFile))
    {
        string line, textLine = "";

        while ((line = sReplaceReader.ReadLine()) != null)
        {
            if (line.Contains("    ")>=4 )//if contains 4 or more spaces
            {
                textLine = line.Replace("    ", "|");
            }

            sWriter.WriteLine(textLine);
        }
    } 
}

我的循环是否存在问题,使得仅遍历一半的图像行后解密就停止了?

enter image description here

2 个答案:

答案 0 :(得分:2)

您正在写newArr[t],但是t是秘密字节值而不是索引。您应该在secretkey的内容上用逻辑异或运算完全替换for循环(假定密钥和秘密数组/矩阵可以广播为相同形状;有关广播{{ 3}}):

key = np.load('key.npy')
secret = plt.imread('secret.bmp')

newArr = np.logical_xor(key, secret)
plt.imshow(newArr)

答案 1 :(得分:0)

我假设您有len(key) < len(secret)

Python的zip函数在到达较短序列的末尾时将停止,因此,如果密钥太短,则问题将不会在到达key的末尾时解密剩余的数据。