首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用XOR进行图像加密

使用XOR进行图像加密
EN

Stack Overflow用户
提问于 2013-03-22 10:23:50
回答 1查看 1.8K关注 0票数 0

好的,我正在做一个视频处理项目,这包括加密每一帧,并将其写入文件(outputenc.avi)。我使用key.jpg通过异或运算对每个文件进行加密,它运行良好,但问题是在解密过程中,我得到了一个嘈杂的原始图像,正在处理的密钥和帧都是尺寸为384*288的灰度图像。

加密

代码语言:javascript
复制
capWebcam.read(matOriginal);
if(matOriginal.empty()==true)
    return;
cv::Mat temp;
cv::resize(matOriginal,matOriginal,dsize,0,0,cv::INTER_CUBIC);
cv::cvtColor(matOriginal,matProcessed,CV_BGR2GRAY);

cv::bitwise_xor(matProcessed,key,temp);
output_enc_cap.write(temp);

解密

代码语言:javascript
复制
capfile.read(temp);
if(temp.empty()==true)
      return;

cvtColor(temp,temp,CV_BGR2GRAY);
cv::bitwise_xor(temp,key,temp);
EN

回答 1

Stack Overflow用户

发布于 2013-03-22 18:41:07

你的代码还有更多的问题:

首先,将帧转换为灰度:

代码语言:javascript
复制
cv::cvtColor(matOriginal,matProcessed,CV_BGR2GRAY);

然后将其发送到您的文件中。从这一点上说,没有办法让你的彩色图像回来。

然后,您将使用(很可能是有损的)编解码器保存图像。有损编解码器在此过程中会丢失一些信息。而且它只保证压缩后的图像看起来与原始图像相似。不能保证它将是相同的。因为“加密”的图像是噪声,所以结果将是噪声。但可能是完全不同的噪音。

然后,这一行试图就地执行一个不能就地工作的算法。但更重要的是,您在文件中编写了一个灰度图像,然后尝试将其转换为灰度图像,就好像它是彩色图像一样。完全是胡说八道。

代码语言:javascript
复制
cvtColor(temp,temp,CV_BGR2GRAY);

然后,在不是“加密”图像的图像上尝试“描述算法”。

抱歉,代码中的每一行都是胡说八道。

因此,我的建议是从低层开始:了解编解码器,了解加密和安全性,阅读其他人在此主题上所做的工作,然后开始。

顺便说一句,创建自己的加密算法不是最好的想法(至少当你不是密码学专家的时候):https://security.stackexchange.com/questions/25585/is-my-developers-home-brew-password-security-right-or-wrong-and-why

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15561668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档