⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 image attack and encryption.m

📁 此程序仅仅用于学术交流
💻 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 + -