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

📄 decryption.m

📁 数字图象加密程序(编写的数字图象加密程序)
💻 M
字号:
clear all;

Image=double(imread('e:\资料\图象数据库\001.jpg'));

figure(1)
subplot(2,2,1)
imshow(Image,[]);
title('加密图像');

Ih=size(Image,1);
Iw=size(Image,2);


key=double(input('请输入解密密钥:','s'));

len=length(key);

while(mod(len,4)~=0)
    len=len+1;
    key(len)=15;
end

N=len/4;
for(i=1:Ih)
    for(j=1:Iw)
        Imagebak(i,j)=Image(i,j);
    end
end

for(n=N:-1:1)
    select=mod(key((n-1)*4+1),4);
    switch(select)
    case 0
        a=1;
		b=mod(key((n-1)*4+2),Ih);   
		c=mod(key((n-1)*4+3),Ih);   
		d=mod((b*c+1),Ih);
    case 1
		a=mod(key((n-1)*4+2),Ih);
		b=1;
		c=mod(a*mod(key((n-1)*4+3),Ih)-1,Ih);
		d=mod(key((n-1)*4+3),Ih);
   	case 2
        a=mod(key((n-1)*4+2),Ih);
		b=mod(a*mod(key((n-1)*4+3),Ih)-1,Ih);
		c=1;
		d=mod(key((n-1)*4+3),Ih);
    case 3
		a=mod(key((n-1)*4+2),Ih)*mod(key((n-1)*4+3),Ih);
		b=mod(key((n-1)*4+2),Ih);
		c=mod(key((n-1)*4+3),Ih);
		d=1;
    end
    
    iterative=mod(key((n-1)*4+4),17);
    
    if(iterative<10)
        iterative=iterative+10;%为防止迭代次数过多或过少,取模17后的值,但若小于10则要加上10
    end	
    
    for(i=1:Ih)
        for(j=1:Iw)
            absc=i-1;
            ordi=j-1;
            for(k=1:iterative)
                absc1=mod((d*absc-b*ordi),Ih);
				ordi1=mod((a*ordi-c*absc),Iw);
                if(absc1==0)
                    absc1=Ih;
                end
                if(ordi1==0)
                    ordi1=Iw;
                end
				absc=absc1-1;
				ordi=ordi1-1;
% 				imagebak[i][j]=(image[i][j]+G*abs(absc-ordi))%256;
            end
            Deimage(absc1,ordi1)=Imagebak(i,j);
        end
    end
    for(i=1:Ih)
        for(j=1:Iw)
            Imagebak(i,j)=Deimage(i,j);
        end
    end
end


figure(1)
subplot(2,2,2)
imshow(Deimage,[]);
title('原图像');

Deimage=uint8(Deimage);

imwrite(Deimage,'Detest.bmp','bmp');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -