📄 image attack and encryption.m
字号:
%《利用随机位相编码技术对光学图像进行保密》论文的试验模拟。
clear all;
close all;
clc;
%读取原图像,其大小为[128,128],并显示
I=imread('test.tif');
%I=imcrop(I,[20 20 127 127]);
figure;imshow(I);
title('Originadl Image');
A=double(I);
%从key1.dat中获得密钥mask1
fid=fopen('key1.dat','rb');
key1=fread(fid,[128,128],'double');
fclose(fid);
%key1=repmat(0.8,[128 128]);
r1=exp(i*2*pi*key1);
%从key2.dat中获得密钥mask1
fid=fopen('key2.dat','rb');
key2=fread(fid,[128,128],'double');
fclose(fid);
r2=exp(i*2*pi*key2);
%产生加密图像B
B=A.*r1;%2、通过mask1
B1=fft2(B);%3、通过透镜1
B2=B1.*r2;%4、通过mask2
B3=ifft2(B2);%5、通过透镜2
A_show=mat2gray(abs(B3));
figure;imshow(A_show);
%figure;imshow(real(B));
title('Encrypted Image');
%把加密后的图像保存
fid=fopen('encrption1.dat','wb');
fwrite(fid,real(B3),'double');%B3的存实部
fclose(fid);
fid=fopen('encrption2.dat','wb');
fwrite(fid,imag(B3),'double');%B3的存虚部
fclose(fid);
%----------------------------------------------------------------
%从key1.dat中获得密钥mask1
%fid=fopen('key1.dat','rb');
%key1=fread(fid,[128,128],'double');
%fclose(fid);
key1=exp(-i*2*pi*key1);
%从key2.dat中获得密钥mask1
fid=fopen('key2.dat','rb');
key2=fread(fid,[128,128],'double');
fclose(fid);
key2=exp(-i*2*pi*key2);
%产生解密图像AA
AA=fft2(B3); %通过透镜1
AA=AA.*key2; %通过mask2的共轭
AA=ifft2(AA); %通过透镜2
AA=AA.*key1; %通过mask1的共轭
AA_show=mat2gray(real(AA));
%AA_show=real(AA);
figure;imshow(AA_show);
title('Deciphered Image');
%产生相位并存储
r=rand(128,128);
fid=fopen('r.dat','wb');
fwrite(fid,r,'double');
fclose(fid);
%The second
%读取原图像,其大小为[128,128],并显示
I=imread('rice.tif');
I=imcrop(I,[20 20 127 127]);
figure;imshow(I);
title('Originadl Image');
A=double(I);
%从key1.dat中获得密钥mask1
fid=fopen('key1.dat','rb');
key1=fread(fid,[128,128],'double');
fclose(fid);
r1=exp(i*2*pi*key1);
%从key2.dat中获得密钥mask1
fid=fopen('key2.dat','rb');
key2=fread(fid,[128,128],'double');
fclose(fid);
r2=exp(i*2*pi*key2);
%产生加密图像B
B=A.*r1;%2、通过mask1
B1=fft2(B);%3、通过透镜1
B2=B1.*r2;%4、通过mask2
B3=ifft2(B2);%5、通过透镜2
A_show=mat2gray(abs(B3));%产生加密图像A
figure;imshow(A_show);
%figure;imshow(real(B));
title('Encrypted Image')
%----------------------------------------------------
%从rr1.dat中获得密钥rr1
fid=fopen('rr1.dat','rb');
rc1=fread(fid,[128,128],'double');
fclose(fid);
fid=fopen('ir1.dat','rb');
ic1=fread(fid,[128,128],'double');
fclose(fid);
co1=rc1+i*ic1;
cod1=conj(co1);
%从rr2.dat中获得密钥rr2
fid=fopen('rr2.dat','rb');
rc2=fread(fid,[128,128],'double');
fclose(fid);
fid=fopen('ir2.dat','rb');
ic2=fread(fid,[128,128],'double');
fclose(fid);
co2=rc2+i*ic2;
cod2=co2;
%产生解密图像AA
AA=fft2(B3); %通过透镜1
AA=AA.*cod2; %通过rr2的共轭
AA=ifft2(AA); %通过透镜2
AA=AA.*cod1; %通过rr1的共轭
AA_show=mat2gray(real(AA));
%AA_show=real(AA);
figure;imshow(AA_show);
title('Deciphered Image');
clear all;
close all;
clc;
%读取原图像,其大小为[128,128],并显示
I=imread('test.tif');
figure;imshow(I);
title('Originadl Image');
A=double(I);
%从key1.dat中获得密钥mask1
fid=fopen('key1.dat','rb');
key1=fread(fid,[128,128],'double');
fclose(fid);
r1=exp(i*2*pi*key1);
%从key2.dat中获得密钥mask1
fid=fopen('key2.dat','rb');
key2=fread(fid,[128,128],'double');
fclose(fid);
r2=exp(i*2*pi*key2);
%产生加密图像B
B=A.*r1;%2、通过mask1
B1=fft2(B);%3、通过透镜1
B2=B1.*r2;%4、通过mask2
B3=ifft2(B2);%5、通过透镜2
A_show=mat2gray(abs(B3));%产生加密图像A
figure;imshow(A_show);
%figure;imshow(real(B));
title('Encrypted Image');
%把加密后的图像保存
fid=fopen('encrption.dat','wb');
fwrite(fid,B3,'double');
fclose(fid);
%----------------------------------------------------------------
%从key1.dat中获得密钥mask1
fid=fopen('key1.dat','rb');
key1=fread(fid,[128,128],'double');
fclose(fid);
key1=exp(-i*2*pi*key1);
%从key2.dat中获得密钥mask1
fid=fopen('key2.dat','rb');
key2=fread(fid,[128,128],'double');
fclose(fid);
key2=exp(-i*2*pi*key2);
%产生解密图像AA
AA=fft2(B3);%2、通过透镜1
AA=AA.*key2;%3、通过mask2的共轭
AA=ifft2(AA);%4、通过透镜2
AA=AA.*key1;%5、通过mask1的共轭
AA_show=mat2gray(real(AA));
%AA_show=real(AA);
figure;imshow(AA_show);
title('Deciphered Image');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -