www.pudn.com > zishiyingjiami.rar > ad.m, change:2012-04-06,size:2182b

```clear all;
clc;
%function B=LRRLL(A)
%分割图片
I0(1:m/2,1:n/2)=I(1:m/2,1:n/2);            %左上角
I1(1:m/2,1:n/2)=I(1:m/2,n/2+1:n);          %右上角
I2(1:m/2,1:n/2)=I(m/2+1:m,n/2+1:n);        %右下角
I3(1:m/2,1:n/2)=I(m/2+1:m,1:n/2);          %左下角
%计算左上角的异或值
IX=0;
for i=1:m/2-1
for j=1:m/2-1
IX=bitxor(IX,I0(i,j));
end
end
%用左上角的异或值产生密钥流
IX=double(IX)/256;
IX=SC(IX);
N=mod(round(abs(IX)*12),12);%离散整数密钥流
for i=1:50
k=N(i);
switch k
case 0
I1=RUTLD(I1);%右上角到左下角扩散加密
case 1
I1=LDTRU(I1);%左下角到右上角扩散加密
case 2
I1=LUTRD(I1);%左上角到右下角扩散加密
case 3
I1=RDTLU(I1);%右下角到左上角扩散加密
case 4
I1=LTR(I1);%左半部分对右半部分置乱加密
case 5
I1=RTL(I1);%右半部分对左半部分置乱加密
case 6
I1=UTD(I1);%上半部分对下半部分置乱加密
case 7
I1=DTU(I1);%下半部分对上半部分置乱加密
case 8
I1=HUD(I1);%从上到下行扩散加密
case 9
I1=HDU(I1);%从下到上行扩散加密
case 10
I1=LLR(I1);%从左到右列扩散加密
case 11
I1=LRL(I1);%从右到左列扩散加密
end
end
figure(1)
imshow(uint8(I1));title('加密');
%计算左下角加密后的异或值
IXX=0;
for i=1:m/2-1
for j=1:m/2-1
IXX=bitxor(IXX,I0(i,j));
end
end
%用左下角加密后的异或值产生解密密钥流
IXX=double(IXX)/256;
IXX=SC(IXX);
N2=mod(round(abs(IXX)*12),12);%离散整数解密密钥流
for i=50:-1:1
k=N2(i);
switch k
case 0
I1=LDTRUJ(I1);
case 1
I1=RUTLDJ(I1);
case 2
I1=RDTLUJ(I1);
case 3
I1=LUTRDJ(I1);
case 4
I1=LTRJ(I1);
case 5
I1=RTLJ(I1);
case 6
I1=UTDJ(I1);
case 7
I1=DTUJ(I1);
case 8
I1=HDUJ(I1);
case 9
I1=HUDJ(I1);
case 10
I1=LRLJ(I1);
case 11
I1=LLRJ(I1);
end
end
figure(2)
imshow(uint8(I1));title('解密');```