
过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,群号:927550334
21世纪是人才的世界,也是信息大爆炸的时代,棱镜门事件就显示了信息安全的重要性,信息加密转换是一件很常见的事,我们现在语音or视频当然不会感受到电报年代的 三长一短==晚上出来吃饭 三段三长==偷袭珍珠港。程序员会经常接触到信息转换,过冷水也了解一点,信息转换和信息加密是一个意思。有点像str2num 和num2str两个函数。
m=56.8133;n=19.2481;
str = ['min(' num2str(m) ',' num2str(double(n)) ')']
Str=str2num(str)
str =
'min(56.8133,19.2481)'
Str =
19.2481
19.2481='min(56.8133,19.2481)' 在读取文本数据和储存数据的时候也会出现
row1='《一代人》';row2='黑夜给了我黑色的眼睛';row3='我却用它寻找光明';
FileID=fopen('test.docx','w','b');
fwrite(FileID,row1, 'char');
fprintf(FileID,'\n');
fwrite(FileID,row2, 'char');
fprintf(FileID,'\n');
fwrite(FileID,row3, 'char');
fclose(FileID);
%读取数据
FileID=fopen('test.docx','r','b');
A=fread(FileID,5000,'char')
B=char(A')
A =
12298
19968
20195
20154
12299
10
40657
22812
32473
20102
25105
40657
33394
30340
30524
30555
10
25105
21364
29992
23427
23547
25214
20809
26126
B =
'《一代人》
黑夜给了我黑色的眼睛
我却用它寻找光明'
B=A举了两个案例让大家了解日常接触到的了信息转换。本期过冷水要讲的图像加密就是类似处理。



%加密方法,混沌序列
A=imread('12.jpg');
imshow(A); title('原图')
[M,N]=size(A);%原始图像A的尺寸一MxN
u1=4;u2=4;x1(1)=0.2;x2(1)=0.7;
sumA=sum(sum(A));
k=mod(sumA,256)*1.0/255;
x1(1)=(x1(1) 0.7804)/2; x2(1)=(x2(1) 0.7804)/2;
y1(1)=(1/3.1415926)*asin(sqrt(x1(1)));
y2(1)=(1/3.1415926)*asin(sqrt(x2(1)));
for i=1:1:M*N-1 %产生2个Logistic混沌序列
x1(i 1)=u1*x1(i)*(1-x1(i));
x2(i 1)=u2*x2(i)*(1-x2(i));
end
for i=1:1:M*N %改造2个Logistic,得到两个y序列
y1(i)=(1/3.1415926)*asin(sqrt(x1(i)));
y2(i)=(1/3.1415926)*asin(sqrt(x2(i)));
end
n=1;
for i=1:1:M %由yl和y2序列对原图像进行值替代加密
for j=1:1:N
if mod(n,1)==0
k(n)=mod(floor(y1(n)*10^15),256);
else
k(n)=mod(floor(y2(n)*10^15),256);
end
A1(i,j)=bitxor(A(i,j),k(n)); %得到加密像素
n=n 1;
end
end
figure,imshow(A1);title('混沌加密图像') %输出得到的加密图像
n=1;
for i=1:1:M
for j=1:1:N
if mod(n,1)==0
k(n)=mod(floor(y1(n)*10^15),256);
else
k(n)=mod(floor(y2(n)*10^15),256);
end
A2(i,j)=bitxor(A1(i,j),k(n)); %得到加密像素
n=n 1;
end
end
figure,imshow(A2);title('解密图像') %输出得到的解密图像该过程思路和图像转换的思路是一样的,but 的简单的电报加密显然不是一次层次的,加密效果是刚刚的,一点看不出来是什么东西。解密有点每种不足的就是彩图变黑白图。过冷水会尝试去解决该问题的让其变的完美,于是就有找到了一种加密和解密的方法

%%图像加密
img=imread('13.jpg');%img代表原图像矩阵
figure,imshow(img);title('原图')
img(1,1,1)
img=double(img);
sizel=size(img)
img_1=img(:);%img_1代表拉直后的图像矩阵
password=[8,12,14,16,3,7,9];
vx=password
[x1,x2]=size(password);%密码的长和宽
k=1;
while x2<1000
p2=password*3
password=[password p2]
[x1,x2]=size(password)
k=k 1
end
[m,n]=size(password)
img_new=zeros(size(img));%新图像的矩阵
c1=zeros(size(img));
j=1;
for x=1:sizel(1)
for y=1:sizel(2)
for z=1:sizel(3)
img_new(x,y,z)=img(x,y,z) password(j);
img_new(x,y,z)=mod(img_new(x,y,z),256);
j=j 1;
if j==n
j=1;
end
end
end
end
figure,imshow(uint8(img_new));title('加密图')
%%图像解密
img=double(img_new);
j=1;
for x=1:sizel(1)
for y=1:sizel(2)
for z=1:sizel(3)
img_new(x,y,z)=img(x,y,z)-password(j);
img_new(x,y,z)=mod(img_new(x,y,z),256);
j=j 1;
if j==n
j=1;
end
end
end
end
figure,imshow(uint8(img_new));title('解密图')加密和解密就像是两个逆过程,懂得加密自然就懂得解密。掌握的这个计算后比如QQ问有些图是不让发的,一发就尽,比如某些网站是不然发二维码的,二维码传不过去,这个时候你就可以上传加密图像,一堆马赛克肯定没问题,在付上一段解密码,就完美传出去了 ,该看的图始终还是会看到。是不是很实用?快快尝试吧!这就本期过冷水和大家分享的图像加密解密的方法。

过冷水发表于 仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。
精品回顾
过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享
