這和加密或解密文本是一樣的。
示例
首先導入一些模塊: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()
注意
為了簡單起見,加密和解密是在同一個Python會話中完成的,因此變量key和iv被立即重用,要測試此解決方案,您必須在同一個Python會話中進行加密和解密。當然,如果以后要在單獨的會話中解密,則需要保存key和iv,并在需要解密時重新加載它們。
測試解決方案
現在您可以打開output.jpg文件,您將看到與input.jpg中的圖像相同的圖像。