www.pudn.com > zishiyingjiami.rar > clock.asv, change:2012-04-06,size:5108b


function =clock(A) 
%第一种加密顺序:左上→右上→右下→左下→左上 
% close all; 
% clc; 
I=imread('lena128.bmp');[m,n]=size(I); 
%分割图片 
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:n/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 
% for i=1:m 
%     for j=1:n 
%         I(1:m/2,n/2+1:n)=I1(1:m/2,1:n/2);   %右上角加密结果 
%     end 
% end 
%figure(1),subplot(2,2,1);imshow(uint8(I));title('加密1'); 
%加密右下角 
%计算右上角加密后的异或值 
IX=0; 
for i=1:m/2-1 
   for j=1:n/2-1 
       IX=bitxor(IX,I1(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 
           I2=RUTLD(I2);%右上角到左下角扩散加密 
       case 1 
           I2=LDTRU(I2);%左下角到右上角扩散加密 
       case 2 
           I2=LUTRD(I2);%左上角到右下角扩散加密 
       case 3 
           I2=RDTLU(I2);%右下角到左上角扩散加密 
       case 4 
           I2=LTR(I2);%左半部分对右半部分置乱加密 
       case 5 
           I2=RTL(I2);%右半部分对左半部分置乱加密 
       case 6 
           I2=UTD(I2);%上半部分对下半部分置乱加密 
       case 7 
           I2=DTU(I2);%下半部分对上半部分置乱加密 
       case 8 
           I2=HUD(I2);%从上到下行扩散 
       case 9 
           I2=HDU(I2);%从下到上行扩散 
       case 10 
           I2=LLR(I2);%从左到右列扩散 
       case 11 
           I2=LRL(I2);%从右到左列扩散 
   end   
end 
% for i=1:m 
%     for j=1:n 
%         I(m/2+1:m,n/2+1:n)=I2(1:m/2,1:n/2);   %右下角加密结果 
%     end 
% end 
%figure(1),subplot(2,2,2);imshow(uint8(I));title('加密2'); 
%加密左下角 
%计算右下角加密后的异或值 
IX=0; 
for i=1:m/2-1 
   for j=1:n/2-1 
       IX=bitxor(IX,I2(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 
           I3=RUTLD(I3);%右上角到左下角扩散加密 
       case 1 
           I3=LDTRU(I3);%左下角到右上角扩散加密 
       case 2 
           I3=LUTRD(I3);%左上角到右下角扩散加密 
       case 3 
           I3=RDTLU(I3);%右下角到左上角扩散加密 
       case 4 
           I3=LTR(I3);%左半部分对右半部分置乱加密 
       case 5 
           I3=RTL(I3);%右半部分对左半部分置乱加密 
       case 6 
           I3=UTD(I3);%上半部分对下半部分置乱加密 
       case 7 
           I3=DTU(I3);%下半部分对上半部分置乱加密 
       case 8 
           I3=HUD(I3);%从上到下行扩散 
       case 9 
           I3=HDU(I3);%从下到上行扩散 
       case 10 
           I3=LLR(I3);%从左到右列扩散 
       case 11 
           I3=LRL(I3);%从右到左列扩散 
   end   
end 
% for i=1:m 
%     for j=1:n 
%         I(m/2+1:m,1:n/2)=I3(1:m/2,1:n/2);   %左上角加密结果 
%     end 
% end 
%figure(1),subplot(2,2,3);imshow(uint8(I));title('加密3'); 
%加密左上角 
%计算左下角加密后的异或值 
IX=0; 
for i=1:m/2-1 
   for j=1:n/2-1 
       IX=bitxor(IX,I3(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 
           I0=RUTLD(I0);%右上角到左下角扩散加密 
       case 1 
           I0=LDTRU(I0);%左下角到右上角扩散加密 
       case 2 
           I0=LUTRD(I0);%左上角到右下角扩散加密 
       case 3 
           I0=RDTLU(I0);%右下角到左上角扩散加密 
       case 4 
           I0=LTR(I0);%左半部分对右半部分置乱加密 
       case 5 
           I0=RTL(I0);%右半部分对左半部分置乱加密 
       case 6 
           I0=UTD(I0);%上半部分对下半部分置乱加密 
       case 7 
           I0=DTU(I0);%下半部分对上半部分置乱加密 
       case 8 
           I0=HUD(I0);%从上到下行扩散 
       case 9 
           I0=HDU(I0);%从下到上行扩散 
       case 10 
           I0=LLR(I0);%从左到右列扩散 
       case 11 
           I0=LRL(I0);%从右到左列扩散 
   end   
end 
% for i=1:m 
%     for j=1:n 
%         I(1:m/2,1:n/2)=I0(1:m/2,1:n/2);   %左上角加密结果 
%     end 
% end 
% figure(1),subplot(2,2,4);imshow(uint8(I));title('加密4'); 
% figure(2),imhist(uint8(I));title('加密直方图');