Logistic 置乱彩色图像加密
置乱彩色图像加密 算法算法 python
置乱彩色图像加密 算法算法 python
Logistic 置乱彩色图像加密
Logistic 图像置乱加密算法,可以加密图像,算法开销小,简单易懂,但是网上没有找到python代码,我就自己写了一个。原
理以及展示可以参考 这篇博文 以及这篇
解码只需要吧加密图像带入算法,即可得到解密后图像。
我优化了算法,对于彩色图像,灰度图像都适用。
以下是算法代码
# logistic encrypted for image
from PIL import Image
import numpy as np
def logic_encrypt(im, x0, mu):
xsize, ysize = im.size
im = np.array(im).flatten()
num = len(im)
for i in range(100):
x0 = mu * x0 * (1-x0)
E = np.zeros(num)
E[0] = x0
for i in range(0,num-1):
E[i+1] = mu * E[i]* (1-E[i])
E = np.round(E*255).astype(np.uint8)
im = np.bitwise_xor(E,im)
im = im.reshape(xsize,ysize,-1)
im = np.squeeze(im)
im = Image.fromarray(im)
return im
以下是测试代码
import matplotlib.pyplot as plt
def img_hist(im):
im = np.array(im)
plt.hist(im.flatten(), bins = 256)
plt.show()
im = Image.open("lena.png")
# im = im.convert("L")
x0 = 0.51
mu = 3.7
im_en = logic_encrypt(im, x0, mu)
im_de = logic_encrypt(im_en, x0, mu)
img_hist(im_en)
下面是实验结果
作者:Maxwave13