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

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

按位异或


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


异或运算也叫半加运算,其运算法则与不带进位的二进制加法类似。在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()


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

相关文章
|
1月前
|
数据采集 存储 XML
深入浅出:基于Python的网络数据爬虫开发指南
【2月更文挑战第23天】 在数字时代,数据已成为新的石油。企业和个人都寻求通过各种手段获取互联网上的宝贵信息。本文将深入探讨网络爬虫的构建与优化,一种自动化工具,用于从网页上抓取并提取大量数据。我们将重点介绍Python语言中的相关库和技术,以及如何高效、合法地收集网络数据。文章不仅为初学者提供入门指导,也为有经验的开发者提供进阶技巧,确保读者能够在遵守网络伦理和法规的前提下,充分利用网络数据资源。
|
2月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
41 0
|
2月前
|
安全 小程序 数据安全/隐私保护
aes加密算法python版本
aes加密算法python版本
39 0
|
14天前
|
存储 算法 安全
Python加密算法有哪些?有什么作用?
这些加密算法的作用在于保护敏感数据的隐私和完整性。它们可以用于数据传输、存储、身份验证和数字签名等领域。通过加密,可以确保数据在传输和存储过程中不被未经授权的人访问或篡改。同时,数字签名可以用于验证数据的来源和完整性,防止数据被篡改或冒充。不同的加密算法在不同的应用场景中起到不同的作用,选择合适的算法取决于安全需求和性能要求。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
8 0
|
15天前
|
JavaScript 前端开发 关系型数据库
金融技术解决方案:用Python和Vue开发加密货币交易平台
【4月更文挑战第11天】本文介绍了如何使用Python和Vue.js构建加密货币交易平台。首先确保安装了Python、Node.js、数据库系统和Git。后端可选择Flask或Django框架,通过RESTful API处理交易。前端利用Vue.js、Vuex和Vue Router创建用户友好的界面,并用Axios与后端通信。这种架构促进团队协作,提升代码质量和平台功能。
|
16天前
|
编解码 计算机视觉 Python
opencv 图像金字塔(python)
opencv 图像金字塔(python)
|
1月前
|
存储 算法 安全
Python的hashlib模块:7种加密算法深入剖析
Python的hashlib模块:7种加密算法深入剖析
153 0
|
1月前
|
存储 计算机视觉
OpenCV(三十九):积分图像
OpenCV(三十九):积分图像
18 0
|
1月前
|
计算机视觉
OpenCV(三十):图像膨胀
OpenCV(三十):图像膨胀
21 0
|
1月前
|
计算机视觉
OpenCV(二十九):图像腐蚀
OpenCV(二十九):图像腐蚀
25 0