在 Python3 中解密后无法从加密文件恢复原始图像文件

Cannot recover original image file from encrypted file after decryption in Python3

我正在编写脚本以使用 RSA 加密 Python 中的文件。我已成功加密原始文件并将其保存到另一个文件中。解密加密文件时,密码是运行,但是当我打开图像时,显示该文件不是.jpg类型的文件。值 n、d 和 e 分别存储在 nfiledfileefile 中。

加解密部分代码如下:

 if myMode == 'encrypt':

    n = open('nfile.pem', 'r')
    e = open('efile.pem', 'r')
    n1 = int(n.read()) 
    e1 = int(e.read())
    translated = str(pow(content1, e1, n1))      
    print(translated)

elif myMode == 'decrypt':

    fileobj2 = open('encrypted.jpg', 'rb')
    content2 = fileobj2.read
    content3 = int.from_bytes(b'content2', byteorder='big')
    fileobj2.close()
    n = open('nfile.pem', 'r')
    d = open('dfile.pem', 'r')
    n1 = int(n.read()) 
    d1 = int(d.read())
    translated = str(pow(content3, d1, n1))  
    translated1 = str.encode(translated)

# Write out the translated message to the output file.

outputFileObj = open('decrypted1.jpg', 'wb')

outputFileObj.write(translated1)

outputFileObj.close()

这里encrypted.jpg是加密后生成的文件。 所附图片是我面临的错误

期待建议。

您的N模数太小,无法直接加密消息。为此,N 至少需要与消息(以位为单位)一样长。具有一百万位左右的模数是非常不切实际的。我曾经尝试过 32786 位 RSA 密钥,当时需要一天才能生成一个密钥对。这就是使用 AES 加密消息,然后使用 RSA 加密 AES 密钥的原因。 AES 密钥比消息小很多,因此几千位的密钥就足够了。