clc
clear all
img=imread('lena.bmp');
[M,N]=size(img);
algs = {'MD2','MD5','SHA-1','SHA-256','SHA-384','SHA-512'};
for n=1:6
h = hash(img,algs{6});
disp([algs{6} '(' num2str(length(h)*4) ' bits):']);
disp(h);
end
for i=1:128
K(i)=hex2dec(h(i));
end
H=dec2bin(K);
H=reshape(H,1,512);
for i=1:(length(H)/4)
k{i}=H((i*4-3):(i*4));
k{i}=bin2dec(k{i});
end
L=floor((M*N+1)/2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:7
sum(j)=0;
end
for j=1:7
for l=1:8
sum(j)=sum(j)+k{16*j+l}/(2^(4*l));
sum(j)=sum(j)*0.8+0.1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:7
x0(j)=sum(j);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:7
for l=1:8
sum(j)=sum(j)+k{16*j+l}/(2^(4*l));
sum(j)=sum(j)*0.4+0.1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:7
p0(j)=sum(j);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=2:7
x0(j)=0.382*x0(j)+0.618*x0(j-1);
end
for j=2:7
p0(j)=0.382*p0(j)+0.618*p0(j-1);
end
for i=1:6
x2{i}=chaotic(x0(i),p0(i),64);
end
x2{7}=chaotic(x0(7),p0(7),65536);
x2{7}=mod(floor(x2{7}*10^14),256);
for i=1:65536
aa{i}=dec2bin(x2{7}(i),8);
end
for i=1:65536
col(i)=bin2dec(aa{i}(5:8)) ;
end
for i=1:65536
rol(i)=bin2dec(aa{i}(1:4)) ;
end
for i=1:65536
bb(i)=sbox(col(i), rol(i));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
img=reshape(img,1,65536);
for i=1:65536
if(mod(i,2)==0)
img(i)= bitxor(img(i),bb(i));
else
img(i)= bitxor(img(i),x2{7}(i));
end
end
img=reshape(img,256,256);
for i=1:8
Array{i} =bitget(img,i);
end
A=Array{1};
B=Array{2};
C=Array{3};
D=Array{4};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
E=Array{5};
F=Array{6};
G=Array{7};
H=Array{8};
for i=1:65536
CC{i}= [A(i),B(i),C(i),D(i),E(i),F(i),G(i),H(i)];
end
for i=1:65536
u{i}=circshift(CC{i},[1,-1]);
CC{i}=bitxor(u{i},CC{i});
end
for i=1:65536
Array{1}(i)=CC{i}(1);
Array{2}(i)=CC{i}(2);
Array{3}(i)=CC{i}(3);
Array{4}(i)=CC{i}(4);
Array{5}(i)=CC{i}(5);
Array{6}(i)=CC{i}(6);
Array{7}(i)=CC{i}(7);
Array{8}(i)=CC{i}(8);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[M,N]=size(Array{1});
BB=zeros(M,N,'uint8');
for i=1:8
BB=bitset(BB,i,Array{i});
end
BB=reshape(BB,1,65536);
for i=1:65536
if(mod(i,2)==0)
img(i)= bitxor(BB(i),bb(i));
else
img(i)= bitxor(BB(i),x2{7}(i));
end
end
BB=reshape(BB,256,256);
figure(1);
imshow(uint8(BB));
figure(2);
imhist(uint8(BB));
imwrite(uint8(BB),'diyipian.bmp');
function z=ff(x,p)
if (x>=0)&&(x<p)
z=x/p;
end
if (x>=p)&&(x<=0.5)
z=(x-p)/(0.5-p);
end
if (x>0.5)&&(x<=1)
z=f(1-x,p)
end
return
function z=chaotic(xx,pp,N)
x(1)=xx;
p=pp;
for i=1:N
if (x(i)>=0)&&(x(i)<p)
x(i+1)=x(i)/p;
end
if (x(i)>=p)&&(x(i)<=0.5)
x(i+1)=(x(i)-p)/(0.5-p);
end
if (x(i)>0.5)&&(x(i)<=1)
x(i+1)=ff(1-x(i),p);
function c=sbox(h,k)
if (h==0)&&(k==0)
c=99;
end
if (h==0)&&(k==1)
c=124;
end
if (h==0)&&(k==2)
c=119;
end
if (h==0)&&(k==3)
c=123;
end
if (h==0)&&(k==4)
c=242;
end
if (h==0)&&(k==5)
c=107;
end
if (h==0)&&(k==6)
c=111;
end
if (h==0)&&(k==7)
c=197;
end
if (h==0)&&(k==8)
c=48;
end
if (h==0)&&(k==9)
c=1;
end
if (h==0)&&(k==10)
c=103;
end
if (h==0)&&(k==11)
c=43;
end
if (h==0)&&(k==12)
c=254;
end
if (h==0)&&(k==13)
c=215;
end
if (h==0)&&(k==14)
c=171;
end
if (h==0)&&(k==15)
c=118;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==1)&&(k==0)
c=202;
end
if (h==1)&&(k==1)
c=130;
end
if (h==1)&&(k==2)
c=201;
end
if (h==1)&&(k==3)
c=125;
end
if (h==1)&&(k==4)
c=250;
end
if (h==1)&&(k==5)
c=89;
end
if (h==1)&&(k==6)
c=71;
end
if (h==1)&&(k==7)
c=240;
end
if (h==1)&&(k==8)
c=173;
end
if (h==1)&&(k==9)
c=212;
end
if (h==1)&&(k==10)
c=162;
end
if (h==1)&&(k==11)
c=175;
end
if (h==1)&&(k==12)
c=156;
end
if (h==1)&&(k==13)
c=164;
end
if (h==1)&&(k==14)
c=114;
end
if (h==1)&&(k==15)
c=192;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==2)&&(k==0)
c=183;
end
if (h==2)&&(k==1)
c=253;
end
if (h==2)&&(k==2)
c=147;
end
if (h==2)&&(k==3)
c=38;
end
if (h==2)&&(k==4)
c=54;
end
if (h==2)&&(k==5)
c=63;
end
if (h==2)&&(k==6)
c=247;
end
if (h==2)&&(k==7)
c=204;
end
if (h==2)&&(k==8)
c=52;
end
if (h==2)&&(k==9)
c=165;
end
if (h==2)&&(k==10)
c=229;
end
if (h==2)&&(k==11)
c=241;
end
if (h==2)&&(k==12)
c=113;
end
if (h==2)&&(k==13)
c=216;
end
if (h==2)&&(k==14)
c=49;
end
if (h==2)&&(k==15)
c=21;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==3)&&(k==0)
c=4;
end
if (h==3)&&(k==1)
c=199;
end
if (h==3)&&(k==2)
c=35;
end
if (h==3)&&(k==3)
c=195;
end
if (h==3)&&(k==4)
c=24;
end
if (h==3)&&(k==5)
c=150;
end
if (h==3)&&(k==6)
c=5;
end
if (h==3)&&(k==7)
c=154;
end
if (h==3)&&(k==8)
c=7;
end
if (h==3)&&(k==9)
c=18;
end
if (h==3)&&(k==10)
c=128;
end
if (h==3)&&(k==11)
c=226;
end
if (h==3)&&(k==12)
c=235;
end
if (h==3)&&(k==13)
c=39;
end
if (h==3)&&(k==14)
c=178;
end
if (h==3)&&(k==15)
c=117;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==4)&&(k==0)
c=9;
end
if (h==4)&&(k==1)
c=131;
end
if (h==4)&&(k==2)
c=44;
end
if (h==4)&&(k==3)
c=26;
end
if (h==4)&&(k==4)
c=27;
end
if (h==4)&&(k==5)
c=110;
end
if (h==4)&&(k==6)
c=90;
end
if (h==4)&&(k==7)
c=160;
end
if (h==4)&&(k==8)
c=82;
end
if (h==4)&&(k==9)
c=59;
end
if (h==4)&&(k==10)
c=214;
end
if (h==4)&&(k==11)
c=179;
end
if (h==4)&&(k==12)
c=41;
end
if (h==4)&&(k==13)
c=227;
end
if (h==4)&&(k==14)
c=47;
end
if (h==4)&&(k==15)
c=132;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==5)&&(k==0)
c=83;
end
if (h==5)&&(k==1)
c=209;
end
if (h==5)&&(k==2)
c=0;
end
if (h==5)&&(k==3)
c=237;
end
if (h==5)&&(k==4)
c=32;
end
if (h==5)&&(k==5)
c=252;
end
if (h==5)&&(k==6)
c=177;
end
if (h==5)&&(k==7)
c=91;
end
if (h==5)&&(k==8)
c=106;
end
if (h==5)&&(k==9)
c=203;
end
if (h==5)&&(k==10)
c=190;
end
if (h==5)&&(k==11)
c=57;
end
if (h==5)&&(k==12)
c=74;
end
if (h==5)&&(k==13)
c=76;
end
if (h==5)&&(k==14)
c=88;
end
if (h==5)&&(k==15)
c=207;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==6)&&(k==0)
c=208;
end
if (h==6)&&(k==1)
c=239;
end
if (h==6)&&(k==2)
c=170;
end
if (h==6)&&(k==3)
c=251;
end
if (h==6)&&(k==4)
c=67;
end
if (h==6)&&(k==5)
c=77;
end
if (h==6)&&(k==6)
c=51;
end
if (h==6)&&(k==7)
c=133;
end
if (h==6)&&(k==8)
c=69;
end
if (h==6)&&(k==9)
c=249;
end
if (h==6)&&(k==10)
c=2;
end
if (h==6)&&(k==11)
c=127;
end
if (h==6)&&(k==12)
c=80;
end
if (h==6)&&(k==13)
c=60;
end
if (h==6)&&(k==14)
c=159;
end
if (h==6)&&(k==15)
c=168;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==7)&&(k==0)
c=81;
end
if (h==7)&&(k==1)
c=163;
end
if (h==7)&&(k==2)
c=64;
end
if (h==7)&&(k==3)
c=143;
end
if (h==7)&&(k==4)
c=146;
end
if (h==7)&&(k==5)
c=157;
end
if (h==7)&&(k==6)
c=56;
end
if (h==7)&&(k==7)
c=245;
end
if (h==7)&&(k==8)
c=188;
end
if (h==7)&&(k==9)
c=182;
end
if (h==7)&&(k==10)
c=218;
end
if (h==7)&&(k==11)
c=33;
end
if (h==7)&&(k==12)
c=16;
end
if (h==7)&&(k==13)
c=255;
end
if (h==7)&&(k==14)
c=243;
end
if (h==7)&&(k==15)
c=210;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==8)&&(k==0)
c=205;
end
if (h==8)&&(k==1)
c=12;
end
if (h==8)&&(k==2)
c=19;
end
if (h==8)&&(k==3)
c=236;
end
if (h==8)&&(k==4)
c=95;
end
if (h==8)&&(k==5)
c=151;
end
if (h==8)&&(k==6)
c=68;
end
if (h==8)&&(k==7)
c=23;
end
if (h==8)&&(k==8)
c=196;
end
if (h==8)&&(k==9)
c=167;
end
if (h==8)&&(k==10)
c=126;
end
if (h==8)&&(k==11)
c=61;
end
if (h==8)&&(k==12)
c=100;
end
if (h==8)&&(k==13)
c=93;
end
if (h==8)&&(k==14)
c=25;
end
if (h==8)&&(k==15)
c=115;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==9)&&(k==0)
c=96;
end
if (h==9)&&(k==1)
c=129;
end
if (h==9)&&(k==2)
c=79;
end
if (h==9)&&(k==3)
c=220;
end
if (h==9)&&(k==4)
c=34;
end
if (h==9)&&(k==5)
c=42;
end
if (h==9)&&(k==6)
c=144;
end
if (h==9)&&(k==7)
c=136;
end
if (h==9)&&(k==8)
c=70;
end
if (h==9)&&(k==9)
c=238;
end
if (h==9)&&(k==10)
c=184;
end
if (h==9)&&(k==11)
c=20;
end
if (h==9)&&(k==12)
c=222;
end
if (h==9)&&(k==13)
c=94;
end
if (h==9)&&(k==14)
c=11;
end
if (h==9)&&(k==15)
c=219;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==10)&&(k==0)
c=224;
end
if (h==10)&&(k==1)
c=50;
end
if (h==10)&&(k==2)
c=58;
end
if (h==10)&&(k==3)
c=10;
end
if (h==10)&&(k==4)
c=73;
end
if (h==10)&&(k==5)
c=6;
end
if (h==10)&&(k==6)
c=36;
end
if (h==10)&&(k==7)
c=92;
end
if (h==10)&&(k==8)
c=194;
end
if (h==10)&&(k==9)
c=211;
end
if (h==10)&&(k==10)
c=172;
end
if (h==10)&&(k==11)
c=98;
end
if (h==10)&&(k==12)
c=145;
end
if (h==10)&&(k==13)
c=149;
end
if (h==10)&&(k==14)
c=228;
end
if (h==10)&&(k==15)
c=121;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==11)&&(k==0)
c=231;
end
if (h==11)&&(k==1)
c=200;
end
if (h==11)&&(k==2)
c=55;
end
if (h==11)&&(k==3)
c=109;
end
if (h==11)&&(k==4)
c=141;
end
if (h==11)&&(k==5)
c=213;
end
if (h==11)&&(k==6)
c=78;
end
if (h==11)&&(k==7)
c=169;
end
if (h==11)&&(k==8)
c=108;
end
if (h==11)&&(k==9)
c=86;
end
if (h==11)&&(k==10)
c=244;
end
if (h==11)&&(k==11)
c=234;
end
if (h==11)&&(k==12)
c=101;
end
if (h==11)&&(k==13)
c=122;
end
if (h==11)&&(k==14)
c=174;
end
if (h==11)&&(k==15)
c=8;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==12)&&(k==0)
c=186;
end
if (h==12)&&(k==1)
c=120;
end
if (h==12)&&(k==2)
c=37;
end
if (h==12)&&(k==3)
c=46;
end
if (h==12)&&(k==4)
c=28;
end
if (h==12)&&(k==5)
c=166;
end
if (h==12)&&(k==6)
c=180;
end
if (h==12)&&(k==7)
c=198;
end
if (h==12)&&(k==8)
c=232;
end
if (h==12)&&(k==9)
c=221;
end
if (h==12)&&(k==10)
c=116;
end
if (h==12)&&(k==11)
c=31;
end
if (h==12)&&(k==12)
c=75;
end
if (h==12)&&(k==13)
c=189;
end
if (h==12)&&(k==14)
c=139;
end
if (h==12)&&(k==15)
c=138;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==13)&&(k==0)
c=112;
end
if (h==13)&&(k==1)
c=62;
end
if (h==13)&&(k==2)
c=181;
end
if (h==13)&&(k==3)
c=102;
end
if (h==13)&&(k==4)
c=72;
end
if (h==13)&&(k==5)
c=3;
end
if (h==13)&&(k==6)
c=246;
end
if (h==13)&&(k==7)
c=14;
end
if (h==13)&&(k==8)
c=97;
end
if (h==13)&&(k==9)
c=53;
end
if (h==13)&&(k==10)
c=87;
end
if (h==13)&&(k==11)
c=185;
end
if (h==13)&&(k==12)
c=134;
end
if (h==13)&&(k==13)
c=193;
end
if (h==13)&&(k==14)
c=29;
end
if (h==13)&&(k==15)
c=158;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==14)&&(k==0)
c=225;
end
if (h==14)&&(k==1)
c=248;
end
if (h==14)&&(k==2)
c=152;
end
if (h==14)&&(k==3)
c=17;
end
if (h==14)&&(k==4)
c=105;
end
if (h==14)&&(k==5)
c=217;
end
if (h==14)&&(k==6)
c=142;
end
if (h==14)&&(k==7)
c=148;
end
if (h==14)&&(k==8)
c=155;
end
if (h==14)&&(k==9)
c=30;
end
if (h==14)&&(k==10)
c=135;
end
if (h==14)&&(k==11)
c=233;
end
if (h==14)&&(k==12)
c=206;
end
if (h==14)&&(k==13)
c=85;
end
if (h==14)&&(k==14)
c=40;
end
if (h==14)&&(k==15)
c=223;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (h==15)&&(k==0)
c=140;
end
if (h==15)&&(k==1)
c=161;
end
if (h==15)&&(k==2)
c=137;
end
if (h==15)&&(k==3)
c=13;
end
if (h==15)&&(k==4)
c=191;
end
if (h==15)&&(k==5)
c=230;
end
if (h==15)&&(k==6)
c=66;
end
if (h==15)&&(k==7)
c=104;
end
if (h==15)&&(k==8)
c=65;
end
if (h==15)&&(k==9)
c=153;
end
if (h==15)&&(k==10)
c=45;
end
if (h==15)&&(k==11)
c=15;
end
if (h==15)&&(k==12)
c=176;
end
if (h==15)&&(k==13)
c=84;
end
if (h==15)&&(k==14)
c=187;
end
if (h==15)&&(k==15)
c=22;
end
return
end
end
z=x;
return