Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Pycrypto进行图像加密和解密_Python_Encryption_Pycrypto - Fatal编程技术网

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

Python 使用Pycrypto进行图像加密和解密,python,encryption,pycrypto,Python,Encryption,Pycrypto,如何使用python库加密图像?我在网上找到了一些,但在图片上找不到。有人能帮我吗?这和加密或解密文本一样 示例 首先导入一些模块: from Crypto.Cipher import AES from Crypto import Random 然后,让我们生成一个键和一个初始化向量 key = Random.new().read(AES.block_size) iv = Random.new().read(AES.block_size) 加密 现在,下面的代码加载一个输入文件input.j

如何使用python库加密图像?我在网上找到了一些,但在图片上找不到。有人能帮我吗?

这和加密或解密文本一样

示例

首先导入一些模块:

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会话中进行加密和解密。当然,如果您想稍后在单独的会话中解密,则需要保存
密钥
iv
,并在需要解密时重新加载它们

测试解决方案


现在您可以打开
output.jpg
文件,您应该会看到一个与
input.jpg

中的图像相同的图像,将图像转换成
bytearray
格式,它应该可以正常工作。因为加密不应该关心数据是英文文本还是二进制jpeg…我正在尝试做类似的事情,但不是能够将图像转换为字节数据,甚至无法通过代码读取图像,因为它出现“utf-8”错误,编解码器无法解码位置0中的字节0xff:起始字节无效。你能看一下这是存储在文件中的图像吗?不,它只是一个图像。事实上,我看了一下,找到了一种方法,这与你现在的做法完全不同。我将很快在这里发布答案。完美@SiddharthChoudhary,干得好!我期待着看:)我不能再回答这个问题了,因为人们已经关闭了它。