Python 加密然后解密图像的像素位

Python 加密然后解密图像的像素位,python,cryptography,Python,Cryptography,我想用128长度的位(010101)对图像进行加密(我必须对其执行算法),然后保存新图像。 并读取加密图像,然后反转位,然后再次保存 我尝试了几种方法: base64编码/解码:它可以工作,但加密的图像无法查看(损坏的标题),但当我解密它时,它会再次恢复正常 通过使用PIL库:读取图像数据,更改像素值,然后创建新图像(图像可查看-一个要求已完成),但当我解密它时,它不会恢复到以前的状态 PIL putpixel示例: def enc(原始名称、加密名称): 输入\u image=image.op

我想用128长度的位(010101)对图像进行加密(我必须对其执行算法),然后保存新图像。 并读取加密图像,然后反转位,然后再次保存

我尝试了几种方法: base64编码/解码:它可以工作,但加密的图像无法查看(损坏的标题),但当我解密它时,它会再次恢复正常

通过使用PIL库:读取图像数据,更改像素值,然后创建新图像(图像可查看-一个要求已完成),但当我解密它时,它不会恢复到以前的状态

PIL putpixel示例:

def enc(原始名称、加密名称):
输入\u image=image.open(原始\u名称)
数据=输入_image.load()
输出图像=图像.new(输入图像.mode,输入图像.size)
对于范围内的x(输入图像大小[0]):
对于范围内的y(输入图像大小[1]):
r、 g,b=数据[x,y]
r1=int({:08b})。格式(r)[::-1],2)
g1=int(“{:08b}.”格式(g)[::-1],2)
b1=int({:08b})。格式(b)[::-1],2)
输出_图像。像素((x,y),(r1,g1,b1))
输出图像。保存(加密名称)
输入_image.close()
输出图像。关闭()
def dec(加密名称、原始名称):
加密的\u image=image.open(加密的\u名称)
数据=加密的_image.load()
普通\u image=image.new(加密的\u image.mode,加密的\u image.size)
对于范围内的x(加密的_图像大小[0]):
对于范围内的y(加密的_image.size[1]):
r、 g,b=数据[x,y]
r1=int({:08b})。格式(r)[::-1],2)
g1=int(“{:08b}.”格式(g)[::-1],2)
b1=int({:08b})。格式(b)[::-1],2)
正常_图像像素((x,y),(r1,g1,b1))
普通\u图像。保存(原始\u名称)
加密的_映像。关闭()
正常图像。关闭()
enc('images/lena.jpg'、'images/lena-enc.jpg')
dec('images/lena-enc.jpg'、'images/lena-dec.jpg')
putdata示例:

def enc(原始名称、加密名称):
原始图像=图像。打开(原始名称)
加密的\u image=image.new(原始\u image.mode,原始\u image.size)
raw=列表(原始图像.getdata())
eraw=[]
对于原料中的px:
r、 g,b=px
r1=int({:08b})。格式(r)[::-1],2)
g1=int(“{:08b}.”格式(g)[::-1],2)
b1=int({:08b})。格式(b)[::-1],2)
eraw.append((r1、g1、b1))
加密的_image.putdata(eraw)
加密的\u图像。保存(加密的\u名称)
原始图像。关闭()
加密的_映像。关闭()
def dec(加密名称、原始名称):
加密的\u image=image.open(加密的\u名称)
raw=列表(加密的\u image.getdata())
普通\u image=image.new(加密的\u image.mode,加密的\u image.size)
eraw=[]
对于原料中的px:
r、 g,b=px
r1=int({:08b})。格式(r)[::-1],2)
g1=int(“{:08b}.”格式(g)[::-1],2)
b1=int({:08b})。格式(b)[::-1],2)
eraw.append((r1、g1、b1))
正常图像数据(eraw)
普通\u图像。保存(原始\u名称)
加密的_映像。关闭()
正常图像。关闭()
enc('images/lena.jpg'、'images/lena1.jpg')
十二月('images/lena1.jpg'、'images/lena2.jpg')

有没有办法获取可解密的可视加密图像?

JPEG使用有损压缩。请改用位图图像,并尝试仅加密像素或点本身,而不是标题信息。JPEG使用有损压缩。改用位图图像,并尝试仅加密像素或点本身,不是标题信息。