首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >图像加密

图像加密

作者头像
裴来凡
发布2022-05-28 16:07:05
发布2022-05-28 16:07:05
5450
举报
代码语言:javascript
复制
import cv2
import numpy as np
lena=cv2.imread("C:/Users/xpp/Desktop/Lena.png",0)#明文:原始图像数据
r,c=lena.shape
key=np.random.randint(0,256,size=[r,c],dtype=np.uint8)#密钥:随机生成一幅图像作为密钥
encryption=cv2.bitwise_xor(lena,key)#加密:通过xor(明文,密钥)实现
decryption=cv2.bitwise_xor(encryption,key)#解密:通过xor(加密图像,密钥)实现
cv2.imshow("lena",lena)
cv2.imshow("key",key)
cv2.imshow("encryption",encryption)
cv2.imshow("decryption",decryption)
cv2.waitKey()
cv2.destroyAllWindows()

算法:通过对原始图像与密钥图像进行按位异或,实现加密,加密后的图像与密钥图像再次进行按位异或,实现解密。

根据按位异或运算规则,假设:

xor(a,b)=c

得到:

xor(c,b)=a

xor(c,a)=b

其中,a,b,c有如下关系:

  • a:明文,原始图像数据;
  • b:密钥;
  • c:密文,通过xor(a,b)实现。

加密过程是将明文a与密钥b进行按位异或,完成加密,得到明文c。解密过程是将密文c与密钥b进行按位异或,完成解密,得到明文a。

注意:位运算是指针对二进制位进行的运算,利用位运算实现对像素点的加密。为了方便数据的运算,将十进制数转换为二进制数后,再进行位运算处理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档