通州网站网站建设,义乌比较好的外贸公司,西安市建设工程交易网,河北网站建站制作在OpenCV中#xff0c;图像加密和解密是通过对图像像素进行一系列的变换和操作来实现的 通过按位异或运算可以实现图像的加密和解密。 通过对原始图像与密钥图像进行按位异或#xff0c;可以实现加密#xff1b;将加密后的图像与密钥图像再次进行按位异或#xff0c;可以实…在OpenCV中图像加密和解密是通过对图像像素进行一系列的变换和操作来实现的 通过按位异或运算可以实现图像的加密和解密。 通过对原始图像与密钥图像进行按位异或可以实现加密将加密后的图像与密钥图像再次进行按位异或可以实现解密。 按位异或运算的基本规则如表 3-15 所示。 根据上述按位异或运算的规则假设 xor(a,b)c 则可以得到 xor(c,b)a xor(c,a)b 上述运算的过程如表 3-16 所示 从上述结果可以看出如果上述 a、b、c 具有如下关系 a明文原始数据。 b密钥。 c密文通过 xor(a,b)实现。 则可以对上述数据进行如下操作和理解。
加密过程将明文 a 与密钥 b 进行按位异或完成加密得到密文 c。 解密过程将密文 c 与密钥 b 进行按位异或完成解密得到明文 a。
位运算是指针对二进制位进行的运算利用位运算即可实现对像素点的加密。在图像处理中需要处理的像素点的值通常为灰度值其范围通常为[0,255]。
例如某个像素点的值为 216明文则可以使用 178该数值由加密者自由选定作为密钥对其进行加密让这两个数的二进制值进行按位异或运算即完成加密得到一个密文 106。当需要解密时将密文 106 与密钥 178 进行按位异或运算即可得到原始像素点值 216明文。具体过程为 bit_xor(216,178)106 bit_xor(106,178)216 以二进制形式表示的具体细节如下。 对图像内的每一个像素点重复上述操作即可完成对图像的加密、解密操作。这里以一个原始图像 O 为例具体说明图像的加密、解密过程。
1加密过程
假设有需要加密的原始图像 O其中的像素值为 选定的加密密钥图像为 K其中的像素值为 图像 O 所对应的二进制表示 OB 为 密钥图像 K 所对应的二进制表示 KB 为 将 OB 与 KB 进行按位异或运算即得到图像 O 的加密图像 OSB OSB 转换为十进制形式 OS如下 至此图像 O 的加密过程完成得到原始图像 O 的加密图像 OS。
2解密过程
解密过程需要将加密图像 OS 与密钥图像 K 进行按位异或运算得到原图像 OR。 将加密图像 OS 的二进制形式 OSB 与密钥图像 K 的二进制形式 KB 进行按位异或运算 即得到原始图像 OR 的二进制形式 ORB。按照上述运算得到的 ORB 为 ORB 转换为十进制形式得到解密图像 OR如下 至此图像的解密过程结束得到加密图像 OS 的解密图像 OR。
从上述过程可以看到解密过程所得到的解密图像 OR 与原始图像 O 是一致的。这说明上 述加密、解密过程是正确的。 上述说明过程中为了方便理解和观察数据的运算在进行按位运算时我们都是将十进 制数转换为二进制数后再进行位运算处理的。实际上在使用 OpenCV 编写程序时不需要 这样转换OpenCV 中位运算函数的参数是十进制数位运算函数会直接对十进制参数进行按位异或运算。
实验1 - 对图片加密解密
import cv2
import numpy as np
lenacv2.imread(lena.png,0)
r,clena.shape
#生成密钥随机生成一个和lena大小一样的矩阵
keynp.random.randint(0,256,size[r,c],dtypenp.uint8)
#对图片进行加密
encryptioncv2.bitwise_xor(lena,key)#对图片进行解密
decryptioncv2.bitwise_xor(encryption,key)
cv2.imshow(lena,lena)
cv2.imshow(key,key)
cv2.imshow(encryption,encryption)
cv2.imshow(decryption,decryption)
cv2.waitKey()
cv2.destroyAllWindows()运行效果 本例的各个图像关系如下。 图像 lena 是明文原始图像是需要加密的图像从当前目录下读入。 图像 key 是密钥图像是加密和解密过程中所使用的密钥该图像是由随机数生成的。 图像 encryption 是加密图像是明文图像 lena 和密钥图像 key 通过按位异或运算得到的。 图像 decryption 是解密图像是加密图像 encryption 和密钥图像 key 通过按位异或运算 得到的。 运行上述程序结果如图所示其中 图(a)是原始图像 lena。 图(b)是密钥图像 key。 图©是原始图像 lena图(a)借助密钥 key图(b)加密得到的加密图像 encryption。 图(d)是对加密图像 encryption图©使用密钥图像 key图(b)解密得到的解密图像 decryption。