通过按位异或运算就可以实现图像的加密与解密。加密:原始图像与秘钥图像按位异或运算。解密:将加密后的图像与秘钥图像进行按位异或,可以实现解密。

基本原理

异或运算是一种半加运算。只加不进。

在二进制中,体现的就是xor(1,1) = 0

基本原理

案例说明

这里,借用一本书上的例子进行讲解。

首先是加密过程:

加密过程

197 172 193 219
78 31 9 85
52 19 91 58
2 167 30 130

解密过程类似,这里不再赘述。

实战演示

例: 甲方和乙方秘密写上一个计划,以一张图片的形式传递消息,只有双方有秘钥。现假设你窃取了原图和秘钥,请你对其加密和解密。

import cv2
import numpy as np
mimi = cv2.imread('mimi.jpg', 0)  # 原图
r, c = mimi.shape
key = np.random.randint(0, 256, size=[r, c], dtype=np.uint8)  # 秘钥

jiami = cv2.bitwise_xor(mimi, key)
jiemi = cv2.bitwise_xor(jiami, key)

cv2.imshow('yuantu', mimi)
cv2.imshow('key', key)
cv2.imshow('jiami', jiami)
cv2.imshow('jiemi', jiemi)
cv2.waitKey()

效果:
加密解密运行效果


素材:mimi.jpg
素材



博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2021/opencv10.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 05 月 24 日
如果觉得我的文章对你有用,请随意赞赏