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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 混沌理论作业简析——两人一组_图像加密解密小游戏

写在前面

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

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


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

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

思考

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


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


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



相关文章
|
6月前
|
算法 安全 测试技术
【传知代码】图像加密解密与数字水印处理-论文复现
该文主要介绍了图像加密解密和数字水印处理的重要性,并提供了相关技术的概述和原理。文章首先强调了信息安全和数据保护在数字化时代的需求,然后分别介绍了图像加密和解密以及数字水印处理的概念。 在图像加密解密部分,提到了两种方法:基于混沌Logistic映射的加密和基于三重DES的加密。前者通过混沌理论进行加密,后者使用经典的三重DES算法。文章提供了每种方法的基本原理,并展示了如何在Python中实现它们,包括使用`cryptography`库进行AES加密和利用PIL库进行图像处理。
【传知代码】图像加密解密与数字水印处理-论文复现
|
6月前
|
数据安全/隐私保护 计算机视觉 Python
我赌你没有了解过——Python 图像加密
我赌你没有了解过——Python 图像加密
|
机器学习/深度学习 传感器 算法
基于混沌系统logistic实现图像加密,解密附matlab代码
基于混沌系统logistic实现图像加密,解密附matlab代码
|
机器学习/深度学习 传感器 算法
【图像加密】基于低对称密码算法实现图像加密解密附matlab代码
【图像加密】基于低对称密码算法实现图像加密解密附matlab代码
|
机器学习/深度学习 传感器 算法
【图像加密解密】基于混沌序列实现图像加密和解密(图像相关性分析)附Matlab实现
【图像加密解密】基于混沌序列实现图像加密和解密(图像相关性分析)附Matlab实现
|
机器学习/深度学习 传感器 算法
【图像加密】基于混沌系统与DNA编码的彩色数字图像加密系统附matlab代码
【图像加密】基于混沌系统与DNA编码的彩色数字图像加密系统附matlab代码
|
机器学习/深度学习 传感器 算法
【图像加密】基于双随机实现图像加密解密附matlab代码
【图像加密】基于双随机实现图像加密解密附matlab代码
|
机器学习/深度学习 传感器 算法
【图像解密】基于双随机相位编码和压缩感应的图像加密附matlab代码
【图像解密】基于双随机相位编码和压缩感应的图像加密附matlab代码
|
机器学习/深度学习 传感器 安全
【图像加密】基于混沌编码实现图像加密解密(PSNR和SNR)附matlab代码
【图像加密】基于混沌编码实现图像加密解密(PSNR和SNR)附matlab代码
|
机器学习/深度学习 传感器 算法
【图像加密】基于离散傅里叶变换 DFT实现数字水印嵌入提取附含Matlab代码
【图像加密】基于离散傅里叶变换 DFT实现数字水印嵌入提取附含Matlab代码

热门文章

最新文章