发布于 2018-04-25 18:04:35
这和加密或解密文本是一样的。
示例
首先导入一些模块:
from Crypto.Cipher import AES
from Crypto import Random然后,让我们生成一个键和一个初始化向量。
key = Random.new().read(AES.block_size)
iv = Random.new().read(AES.block_size)加密
下面的代码加载输入文件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()解密
最后,下面的代码加载加密的文件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()Note
为了简单起见,加密和解密都是在同一个Python会话中完成的,因此变量key和iv已经被立即重用,为了测试这个解决方案,您必须在同一个Python会话中进行加密和解密。当然,如果您想稍后在单独的会话中解密,则需要保存key和iv,并在需要解密时重新加载它们。
测试解决方案
现在您可以打开output.jpg文件,您应该可以看到一个与input.jpg中的图像相同的图像。
https://stackoverflow.com/questions/41980931
复制相似问题