混沌理论作业简析——两人一组_图像加密解密小游戏

简介: 混沌理论作业简析——两人一组_图像加密解密小游戏

写在前面

最近混沌理论的课程要求俩人一组进行图像的加密和解密,即一个人来对一张图像进行加密,另一个人对加密后的图像进行解密。🥗🥗🥗对图像加密的方式有很多种,很自然的想法就是在图像中加入一些随机的噪点,让原始图像变得不清晰。当然方法太多太多,感兴趣的小伙伴可以在评论区说说你的想法喔🍐🍐🍐

先来说一下这节我的思路【我也是才学,加密方式不好勿喷👰👰👰】对于加密:我主要采用的是对一张图像的三个通道分别进行加密,具体加密方式是通过生成随机矩阵来和不同通道的图像进行异或运算。对于解密:解密者需要得到加密后的图像和生成的随机矩阵方可解密。下面直接看代码:


首先是导入一些必要的库及定义了一个画图的函数【这样方便后面画图啦】

import cv2 #opencv读取的格式是BGR
import matplotlib.pyplot as plt
import numpy as np 
%matplotlib inline 
def cv_show(name,img):
    cv2.imshow(name,img) 
    cv2.waitKey(0) 
    cv2.destroyAllWindows()

加密

img = cv2.imread('Lenna.png')
cv_show('img',img)
# 颜色通道获取
b,g,r=cv2.split(img)
Rand = np.random.randint(0, 256, size=(3,256, 256), dtype=np.uint8) 
np.save("Rand.npy", Rand)   #将Rand数组存储下来
# 分别对3个通道进行异或
b_rand = cv2.bitwise_xor(b, Rand[0])  
g_rand = cv2.bitwise_xor(g, Rand[1])
r_rand = cv2.bitwise_xor(r, Rand[2])
img_encryption = cv2.merge((b_rand,g_rand,r_rand))
cv_show('img_encryption',img_encryption)
cv2.imwrite('img_encryption.png',img_encryption)   #保存加密图像

输出结果:

b7d673167842418798e0924c7010862d.png

8c4aed2647f544dc9bcf4458937a9b1b.png

解密

Rand1 = np.load("Rand.npy")   #将Rand数组读取出来
img_encryption = cv2.imread('img_encryption.png')   #读取加密图像
b_rand,g_rand,r_rand=cv2.split(img_encryption)
b_rec = cv2.bitwise_xor(b_rand, Rand1[0]) 
g_rec = cv2.bitwise_xor(g_rand, Rand1[1])
r_rec = cv2.bitwise_xor(r_rand, Rand1[2]) 
img_decode = cv2.merge((b_rec,g_rec,r_rec))
cv_show('img_decode',img_decode)

输出结果:

00bf0c7ed0a0491d9531133fb2adb45e.png

思考

我们这里可以进行一些思考,即是否可以采用其他的一些加密方式,这里提供我的一些思路【随便想的,不一定保证正确】:


  • 不采用随机矩阵进行异或,而是让图片自身进行异或,这样的好处是解密时不需要提供随机矩阵,而是仅仅提供一张加密后图片即可进行解密,坏处也很明显,那就是不安全。
  • 能否改变图片的通道顺序对其加密
  • 对一张图像进行卷积进行加密,然后利用反卷积解密


感兴趣的大家可以一些来思考,把灵感留在评论区,万分感谢🙏🙏🙏



相关文章
|
9月前
|
机器学习/深度学习 传感器 算法
基于混沌系统logistic实现图像加密,解密附matlab代码
基于混沌系统logistic实现图像加密,解密附matlab代码
|
11月前
|
机器学习/深度学习 传感器 算法
【图像加密】基于低对称密码算法实现图像加密解密附matlab代码
【图像加密】基于低对称密码算法实现图像加密解密附matlab代码
|
11月前
|
机器学习/深度学习 传感器 算法
【图像加密解密】基于混沌序列实现图像加密和解密(图像相关性分析)附Matlab实现
【图像加密解密】基于混沌序列实现图像加密和解密(图像相关性分析)附Matlab实现
|
11月前
|
机器学习/深度学习 传感器 算法
【图像加密】基于双随机实现图像加密解密附matlab代码
【图像加密】基于双随机实现图像加密解密附matlab代码
|
12月前
|
机器学习/深度学习 传感器 安全
【图像加密】基于混沌编码实现图像加密解密(PSNR和SNR)附matlab代码
【图像加密】基于混沌编码实现图像加密解密(PSNR和SNR)附matlab代码
|
机器学习/深度学习 传感器 算法
【图像加密】基于混沌系统与DNA编码的彩色数字图像加密系统附matlab代码
【图像加密】基于混沌系统与DNA编码的彩色数字图像加密系统附matlab代码
|
机器学习/深度学习 传感器 算法
【图像解密】基于双随机相位编码和压缩感应的图像加密附matlab代码
【图像解密】基于双随机相位编码和压缩感应的图像加密附matlab代码
|
机器学习/深度学习 传感器 算法
【图像加密】基于离散傅里叶变换 DFT实现数字水印嵌入提取附含Matlab代码
【图像加密】基于离散傅里叶变换 DFT实现数字水印嵌入提取附含Matlab代码
|
数据安全/隐私保护 Python
图像的加密和解密---OpenCV-Python开发指南(5)
图像的加密和解密---OpenCV-Python开发指南(5)
238 0
图像的加密和解密---OpenCV-Python开发指南(5)
|
机器学习/深度学习 传感器 算法
基于像素预测和位平面压缩的加密图像可逆数据隐藏附matlab代码(论文复现)
基于像素预测和位平面压缩的加密图像可逆数据隐藏附matlab代码(论文复现)