Python DES加密时JPG图像会丢失质量

Python DES加密时JPG图像会丢失质量,python,image,encryption,Python,Image,Encryption,我正在使用PyCrypto Python库尝试用密码加密.jpg图像文件。然而,每当我解密文件并打开它时,它看起来就像一道彩虹,尽管你可以模糊地看到原始图像,但它看起来一点也不像。我想知道质量损失在哪里?我的猜测是,当我填充文件时(你知道,所以长度是8的倍数,这是DES所需要的),我使用“{”字符进行填充,当我解密文件时,我使用decryptedFileText.replace(“{,”),你知道,为了去掉填充字符,但同时,我可能正在删除其他字符”{'字符对图像质量至关重要。我想知道是否有人知道

我正在使用PyCrypto Python库尝试用密码加密.jpg图像文件。然而,每当我解密文件并打开它时,它看起来就像一道彩虹,尽管你可以模糊地看到原始图像,但它看起来一点也不像。我想知道质量损失在哪里?我的猜测是,当我填充文件时(你知道,所以长度是8的倍数,这是DES所需要的),我使用“{”字符进行填充,当我解密文件时,我使用decryptedFileText.replace(“{,”),你知道,为了去掉填充字符,但同时,我可能正在删除其他字符”{'字符对图像质量至关重要。我想知道是否有人知道填充文件的方法可以解决这个问题,或者我是否完全忽略了这个问题。

填充文件时,请确保填充字符与文件中的最后一个字节不同。删除填充时,请删除文件末尾的字节hat具有相同的值,一行最多8个。如果原始文件的长度是8的倍数,请添加8个pad字节,与文件中的最终值不同


如果以这种方式填充文件,请不要使用replace(),它将对整个文件进行操作,而是使用类似于
decryptedFileText=decryptedFileText.rstrip(decryptedFileText[-1])的方法,如果您删除图像中的{字节,则剩余的像素数据将被偏移并被错误地解释。这就是您的输出被扭曲的原因。非常感谢!我应该考虑这样做。问题是,您如何知道文件末尾的字符中有多少是焊盘,哪些实际上是文件的一部分?所以您是说我应该检查文件中的最后一个字符并相应地更改pad?问题是我正在填充一组图像。如何使用正确的pad字符标记文件?检查文件中的最后一个字节,并为pad字符选择任何其他值。如果文件的长度是8的倍数,请添加8个pad字节;否则,请一直填充到长度是0的倍数f 8.要删除焊盘,您不需要知道它是什么;只需从文件末尾删除相互匹配的值即可。这保证文件结尾最多有8个相同值的焊盘字符,这与未添加文件的最后一个非焊盘字节不同。