【发布时间】:2020-12-24 09:04:26
【问题描述】:
我正在寻找使用密钥加密图像的方法,第一个输入应该是这样的图像:
第二个输入如下所示:
key = "01010100 01110010 10101110 01110001 10110000 01100001 01010010 10110001 10110011 10110011 10000000 01011100 01010010 01011100 11010011 00011000 10100100"(或者我可以将其转换为另一种类型,但这是我的原始数据)
在 xor image^key 之后输出应该是这样的:
到目前为止我尝试了什么?
import cv2
import numpy as np
demo = cv2.imread("koala.jpeg")
key = "01010100 01110010 10101110 01110001 10110000 01100001 01010010 10110001 10110011 10110011 10000000 01011100 01010010 01011100 11010011 00011000 10100100"
r, c, t = demo.shape
encryption = cv2.bitwise_xor(demo, key) # encryption
decryption = cv2.bitwise_xor(encryption, key) # decryption
cv2.imshow("encryption", encryption) # Display ciphertext image
cv2.imshow("decryption", decryption) # Display the decrypted image
cv2.waitKey(-1)
cv2.destroyAllWindows()
这是输出:
Traceback (most recent call last):
File "/Users/kemal/Documents/Python/pyImage/xor.py", line 10, in <module>
encryption = cv2.bitwise_xor(demo, key) # encryption
TypeError: Expected Ptr<cv::UMat> for argument 'src2'
我的问题是,异或我的图像和我的密钥的正确方法是什么?
现在我已经用两个图像成功加密了,但是当我想用一个密钥加密我的图像时它不起作用。
实际上我知道这是错误的加密方法,也许我可以尝试将我的密钥转换为图像,但我相信有一种正确的方法可以做到这一点,我想学习。感谢您的任何帮助。
如果这个库不是进行这种加密的正确方法,我也可以更改库并使用不同的库,没有任何限制。对我来说,唯一重要的是输入和输出。
感谢您的任何帮助。
【问题讨论】:
-
加密是一个庞大的领域,需要出色的数学技能。简单的加密方法,就像您在代码中尝试的那样,太简单而无法破解。我建议你先研究一下various types of modern cypher actually work 是如何工作的。
-
@kemalsanli 抱歉,我没有看到任何问题。你已经加密工作了。你不是吗?你还有什么想要实现的吗? “正确的方式”是什么意思?
-
加密不起作用,它给出了这个错误
TypeError: Expected Ptr<cv::UMat> for argument 'src2'我可以从我的密钥输入创建图像,我可以异或图像和密钥图像但这不是我想要的,我想用异或图像关键不是另一个图像。我正在为此询问正确的方法。我会编辑我的帖子对不起误解。
标签: python-3.x image encryption xor bitwise-xor