美文网首页
图像的加密和解密---OpenCV-Python开发指南(5)

图像的加密和解密---OpenCV-Python开发指南(5)

作者: 极客学编程 | 来源:发表于2021-04-13 21:12 被阅读0次

按位异或

要实现图像的加密与解密,我们首先需要掌握数学中的按位异或计算方式。

异或运算也叫半加运算,其运算法则与不带进位的二进制加法类似。在python中,通过“^”符号进行异或计算。下面,博主专门列出一个表格详解按位异或运算:

算数1 算数2 结果 python代码
0 0 0 0^0
0 1 1 0^1
1 0 1 1^0
1 1 0 1^1

简单的概括按位异或运算的规则是:相同的两个数运算为0,不同两个数运算为1。按位异或不仅仅用于图像的加密与解密,而且可以通过它统计不相同的数。

什么是图像的加密与解密

图像的加密定义:通过对原始图像与密钥图像进行按位异或运算。

图像的解密定义:将加密后的图像与密钥图像在次进行按位异或运算。

从图像的加密与解密可以看出来,它们都是同一种运算。

我们现在规定异或的文字符号为xor,根据上述按位异或运算,我们假设:

xor(a,b)=c

则可以得到:

xor(c,b)=a

亦或者:

xor(c,a)=b

综上所述,我们假设a为原始的图像数据,b为密钥,那么通过xor(a,c)计算出来的c就是加密后的密文。简单的概括加密与解密。

加密过程:将图像a与密钥b进行按位异或运算,完成加密,得到密文c。

解密过程:将密文c与密钥b进行按位异或运算,完成解密,得到图像a。

将图像加密

既然我们完全掌握了图像加密与解密的原理,下面我们通过代码来实现一个图像的加密。同样的,这里我们先获取一个灰度图像。

import cv2
import numpy as np

img = cv2.imread("4.jpg", 0)
r, c = img.shape
key = np.random.randint(0, 256, size=[r, c], dtype=np.uint8)
encryption = cv2.bitwise_xor(img, key)

cv2.imshow("111", encryption)
cv2.waitKey()
cv2.destroyAllWindows()

运行之后,我们会得到乱码图像:


图像加密

将图像解密

将图像解密通过是通过按位异或运算,这里我们只需要用加密后的图像与key进行按位异或即可,完整代码如下所示:

import cv2
import numpy as np

img = cv2.imread("4.jpg", 0)
r, c = img.shape
key = np.random.randint(0, 256, size=[r, c], dtype=np.uint8)
encryption = cv2.bitwise_xor(img, key)
decryption = cv2.bitwise_xor(encryption, key)
cv2.imshow("111", encryption)
cv2.imshow("222", decryption )
cv2.waitKey()
cv2.destroyAllWindows()

运行之后,我们即可得到原图与加密图像:


加密与解密

相关文章

  • 图像的加密和解密---OpenCV-Python开发指南(5)

    按位异或 要实现图像的加密与解密,我们首先需要掌握数学中的按位异或计算方式。 异或运算也叫半加运算,其运算法则与不...

  • 简单的对图片进行加密与解密

    简单的对图片进行加密与解密 对图像的解密就是将你加密的规则进行重新运算一遍

  • 加密

    来源于:MD5加密,Base64加密/解密,AES加密/解密

  • crypto-js实现加密解密

    1、DES加密 2、DES解密 3、AES加密 4、AES解密 5、注意:js的前端加密不能与java加密代码写的...

  • python 加密解密

    Python 利用 pyDes对字符串进行解密 base64加密解密 md5加密

  • python加密解密

    1. md5加密 方法一:使用Crypto 方法二:使用hashlib 2. AES加密解密 导入库 加密 解密

  • 加密方法(MD5和 des)

    提示: MD5和 des 都可以加密但是对于文件的加密,但是 MD5加密属于单向加密,可以在某些在线的网站进行解密...

  • 非对称加密和对称加密

    非对称加密和对称加密在加密和解密过程、加密解密速度、传输的安全性上都有所不同,具体介绍如下: 1、加密和解密过程不...

  • 非对称加密和对称加密的区别

    非对称加密和对称加密在加密和解密过程、加密解密速度、传输的安全性上都有所不同,具体介绍如下: 1、加密和解密过程不...

  • 哈希、堆

    一、哈希 MD5 哈希算法不是加密的,因为加密对应的是还可以解密,也就是可逆。 对称加密和非对称加密 对称加密不安...

网友评论

      本文标题:图像的加密和解密---OpenCV-Python开发指南(5)

      本文链接:https://www.haomeiwen.com/subject/gnfzkltx.html