如何使用python中的CBC AES加密解密加密的图像?

问题描述

我已使用以下代码进行加密。我已完成以下操作。
*将图像转换为RGB格式并以字节为单位读取图像数据 *通过所需的AES模式加密图像数据 *将图像数据转换为与PIL兼容的格式 *将加密的图像数据复制到新图像中并保存它##


filename = "lena1.bmp" 
filename_out = "lena1_encrypted" 
format = "BMP" 
key = "aaaabbbbccccdddd" 
def pad(data): 
    return data + b"\x00"*(16-len(data)%16)
def convert_to_RGB(data): 
    r,g,b = tuple(map(lambda d: [data[i] for i in range(0,len(data)) if i % 3 == d],[0,1,2])) 
pixels = tuple(zip(r,b)) 
    return pixels 
 def aes_cbc_encrypt(key,data,mode=AES.MODE_CBC): 
    IV = "A"*16 
    aes = AES.new(key,mode,IV) 
    new_data = aes.encrypt(data)
    return(new_data) 
      def reprocess_image(filename): 
    # Opens image and converts it to RGB format for PIL 
    im = Image.open(filename) 
    data = im.convert("RGB").tobytes()  
    original = len(data)  
    # Encrypts using desired AES mode (we'll set it to ECB by default) 
    new = convert_to_RGB(aes_cbc_encrypt(key,pad(data))[:original])
    im2 = Image.new(im.mode,im.size) 
    im2.putdata(new)  
    #Save image 
    im2.save(filename_out+"."+format,format) 
    #print(new)
    plt.imshow(im2)
    def process_image(filename): 
    # Opens image and converts it to RGB format for PIL 
    im = Image.open(filename) 
    data = im.convert("RGB").tobytes()  
    original = len(data)  
 
    # Encrypts using desired AES mode (we'll set it to ECB by default) 
    new = convert_to_RGB(aes_cbc_encrypt(key,im.size) 
    im2.putdata(new) 
     
    #Save image 
    im2.save(filename_out+"."+format,format) 
    #print(new)
    plt.imshow(im2)
    process_image(filename)
   

我被卡在解密部分。请帮助我。以下是加密代码

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)