前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlab图像加密

matlab图像加密

作者头像
巴山学长
发布2019-07-15 15:13:05
8340
发布2019-07-15 15:13:05
举报
文章被收录于专栏:巴山学长

在谈到图像加密之前,我先让大家简单了解一下密码学的基本原理。下面我先将一个小故事:

王二狗是狗国军队里的一个师长。现在,他正在和奥三驴领导的驴国军队打仗。他想今晚偷袭驴军军营。但是他需要张五猫领导的猫国军队的支援。他需要送一封信给张五猫。信的内容是“Attack the enemy together tonight”,意思是今晚一起偷袭敌军。他让警卫员王三狗前去送信,但是加入这封信被驴国军队截了,就会..................

驴国军队就会先下手为强,将猫狗两国各个击破。于是他事先和张五猫约定。然后把信改成了“cwufdnumfgoiobutigumfuutplmv”然后叫警卫员送了出去。想必大家现在是

没事,奥三驴也是一脸懵逼。且听我细细道来,原来,王二狗和张五猫事先约定密码是2315。发信息的将真实信息按照这个密码,每个字母移动相应的位数。比如按照26个字母的排序abcdefghijklmnopqrstuvwxyz。attack里面的a就应该改成c,而t应该改成w。依此类推。如果超过了26个字母,就返回a。张五猫收到信息后向前反推,就知道了真实意思。这就是密码学的基本原理。

下面我给大家讲一讲图像加密

这就是简单加密后的女神图片。因为设置的密码比较简单,所以大家还能分辨出来,如果密码复杂就会变成这样

完全看不清楚,其实原理和上面说过的王二狗加密是一样的,因为图像的本质是就是一个大矩阵。里面的数字都是1--256的,彩色图像由三维矩阵构成,我们按照一个密码,比如[3,5,8,12,6,8]。将矩阵中的数字按顺序向后移动,就会将图像变得模糊不清。首先是载入图片,将图片名字改成"12.jpg",img=imread('12.jpg')。然后就可以运算了。代码使用了for循环实现加密

代码语言:javascript
复制
img=imread('12.jpg');%img代表原图像矩阵
img=double(img);
img_1=img(:);%img_1代表拉直后的图像矩阵
%password=[2,5,8,12,14,16,19,23,25,27,29,34,36,45,6,1,3,4,5,8,5,13];
password=randperm(256);
[m,n]=size(password);%密码的长和宽
for i=1:n
    password(i)=password(i)^2+25;
end
img_new=zeros(size(img));%新图像的矩阵
c1=zeros(size(img));
j=1;
for i=1:size(img_1)
    img_new(i)=password(j)+img_1(i);
    img_new(i)=mod(img_new(i),256);

    j=j+1;
    if j==n
        j=1;
    end
end
imshow(uint8(img_new))%显示图像的方法
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档