使用 Pycrypto 进行图像加密和解密

5 python encryption pycrypto

如何使用Pycrypto python 库加密图像?我在互联网上找到了一些文本加密示例,但我没有找到与图像相同的示例。谁能帮我?

Kub*_*r82 4

它与加密或解密文本相同。

例子

首先导入一些模块:

from Crypto.Cipher import AES
from Crypto import Random
Run Code Online (Sandbox Code Playgroud)

之后,让我们生成一个密钥和一个初始化向量。

key = Random.new().read(AES.block_size)
iv = Random.new().read(AES.block_size)
Run Code Online (Sandbox Code Playgroud)

加密

现在,下面的代码加载输入文件input.jpg并对其进行加密,然后将加密的数据保存在文件中encrypted.enc。在此示例中,AES 分组密码与 CFB 操作模式一起使用。

input_file = open("input.jpg")
input_data = input_file.read()
input_file.close()

cfb_cipher = AES.new(key, AES.MODE_CFB, iv)
enc_data = cfb_cipher.encrypt(input_data)

enc_file = open("encrypted.enc", "w")
enc_file.write(enc_data)
enc_file.close()
Run Code Online (Sandbox Code Playgroud)

解密

最后,下面的代码加载加密文件encrypted.enc并解密它,然后将解密的数据保存在文件中output.jpg

enc_file2 = open("encrypted.enc")
enc_data2 = enc_file2.read()
enc_file2.close()

cfb_decipher = AES.new(key, AES.MODE_CFB, iv)
plain_data = cfb_decipher.decrypt(enc_data2)

output_file = open("output.jpg", "w")
output_file.write(plain_data)
output_file.close()
Run Code Online (Sandbox Code Playgroud)

笔记

为简单起见,加密和解密已在同一个 Python 会话中完成,因此变量keyiv已立即重用,并且要测试此解决方案,您必须在同一个 Python 会话中进行加密和解密。当然,如果您想稍后在单独的会话中解密,则需要保存keyiv在需要解密时重新加载它们。

测试解决方案

现在您可以打开该output.jpg文件,您应该看到一张与 中的图像相同的图像input.jpg