%%%%%%%%%%%%%%%%%%%%%%%%%%%%Image Not Modified%%%%%%%%%%%%%%%%%%%%% %encrypt blue and insert into red componant at bit no. 2 and detect originalty of image %at time domain clc clear all tic; % hash processing by SHA160 to get photo ID from camera ID CameraID='acef' L=length(CameraID) METH='SHA160'; [digest, MSG_RAW_512] = hash(L,METH,0,CameraID); k1=[digest]; %figure (1), imshow(double(K1)); k=k1(1:16);%photo ID %figure (2), imshow(uint8(K)); %---------------------------------------------------------------------------------------------------------------- I=imread('gastro.jpg'); R=I(:,:,1); G=I(:,:,2); B=I(:,:,3); figure(1),imshow(R) figure(2),imshow(G) figure(3),imshow(B) figure(4),imshow(I) %% %To resize Red(R) matrix and no reminder element [r,c]=size(R); if (rem(r,8)~=0) r=r+ (8-rem(r,8)); end if (rem(c,8)~=0) c=c+ (8-rem(c,8)); end NewimgR=zeros(r,c); NewimgR(1:size(R,1),1:size(R,2))=R; RM=NewimgR; figure(5), imshow (uint8(NewimgR)); %% %To resize Green(G) matrix and no reminder element 8*8 [r,c]=size(G); if (rem(r,8)~=0) r=r+ (8-rem(r,8)); end if (rem(c,8)~=0) c=c+ (8-rem(c,8)); end NewimgG=zeros(r,c); NewimgG(1:size(G,1),1:size(G,2))=G; GM=NewimgG; figure(6), imshow (uint8(GM)); %To resize Blue(B) matrix for encryption processing by AES 4*4 [r,c]=size(B); if (rem(r,8)~=0) r=r+ (8-rem(r,8)); end if (rem(c,8)~=0) c=c+ (8-rem(c,8)); end NewimgB=uint8(zeros(r,c)); NewimgB(1:size(B,1),1:size(B,2))=B; BM=NewimgB; figure(7), imshow (uint8(BM)); %---------------------------------------------------------------------------------------------------------------- %Encryption process by AES for blue componant for i=1:4:r for j=1:4:c pb=NewimgB(i:i+3, j:j+3); plaintext= pb; ssi; %plaintext=['A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P']; plain=reshape(plaintext,4,4); plain = double(abs (plain)); %key = ['0' '0' '6' '0' 'b' '9' '0' 'a' 'f' 'm' 'h' 'l' 'f' 'a' 'k' 'n'];%key = Photo ID key=k;%Photo ID key=abs(key); w = key_expansion (key, s_box, rcon); ciphertext = cipher (plain, w, s_box, poly_mat,ind_matleft); % ciphertext = reshape(ciphertext,1,16); cb(i:i+3, j:j+3)=ciphertext; end end ciphertext = char(cb); Newimgcb=cb; EBmidsb=bitget ((cb),2);%extraction bit no. 2 of encrypted blue figure (8),imshow(uint8(cb)); %figure (9),imshow(uint8(db)); RMmidsb=bitget ((RM),2);%extraction bit no. 2 of red coponanet NRM=bitset(RM,2,EBmidsb);%modified red componanet which substituted by bit no. 2 of encrypted blue db=dec2bin (EBmidsb); dRM=dec2bin(RM); dNRM=dec2bin(NRM); figure (9),imshow(uint8(EBmidsb)); %bm=dec2mvl(BM);%bb=dec2bin(BM);%bb1=bitget((BM),1);%bg=dec2bin(GM);%bg1=bitget((GM),1); %bm2=bitget((BM), 8);%bf=bitset(BM,2,GM);%bf1=dec2bin(bf); figure(10),imshow(uint8(NRM));%red modified %to get resized original image without prints [rR,cR]=size(NewimgR); NI(:,:,1)=(NewimgR(1:rR,1:cR)); [rG,cG]=size(GM); NI(:,:,2)=(GM(1:rG,1:cG)); [rB,cB]=size(BM); NI(:,:,3)=(BM(1:rB,1:cB)); figure(11),imshow(uint8(NI)) %To get image with prints [rR,cR]=size(NRM); NewI(:,:,1)=(NRM(1:rR,1:cR)); [rG,cG]=size(GM); NewI(:,:,2)=(GM(1:rG,1:cG)); [rB,cB]=size(BM); NewI(:,:,3)=(BM(1:rB,1:cB)); figure(12),imshow(uint8(NewI)); Y=sum(abs(sum(NRM-NewimgR)))/(r*c);%mean absolute error between red with prints and original resized red figure (13),imshow(uint8(Y)); Y1=sum(abs(sum(NewI-NI)))/(3*r*c);%mean absolute error between image with prints and original resized red figure (14),imshow(uint8(Y1)); toc; %Metrics block for performance measurement MAE = mae(uint8(NewI),uint8(NI));%the mean of absolute errors fprintf('\n The mean-absolute error is %0.4f\n', MAE); MSE = immse (uint8(NewI), uint8(NI));%mean square error between Stego-image and cover(original) image fprintf('\n The mean-squared error is %0.4f\n', MSE); PSNR= psnr(uint8(NewI), uint8(NI));% peak signal to noise Ratio for the image with prints, with the original image as the reference [PSNR, snr] = psnr(uint8(NewI), uint8(NI)); fprintf('\n The Peak-SNR value is %0.4f', PSNR); fprintf('\n The SNR value is %0.4f \n', snr); ssimval = ssim(uint8(NewI), uint8(NI));%computes the Structural Similarity Index (SSIM) value for NewI image(image with print) using NI(original image) as the reference image fprintf('The SSIM value is %0.4f.\n',ssimval); corr=corr2(uint8(NRM),uint8(NewimgR));%loss of correlation between image with print signs and original image. fprintf('\n The loss of correlation is %0.4f\n', corr); m1=mean2 (uint8(NewI));%Mean or avarage for image with prnt signs m2=mean2 (uint8(NI));%Mean or avarage for original image LD=2*(m1.*m2)./((m1.^2)+(m2.^2));%luminance distortion fprintf('\n The luminance distortion is %0.4f\n', LD); s1=std2 (uint8(NewI));%standard division for image with prnt signs s2=std2 (uint8(NI));%standard division for image with prnt signs CD=2*((s1.*s2)./((s1.^2)+(s2.^2)));%contrast distortion fprintf('\n The contrast distortion is %0.4f\n', CD); Q=corr*LD*CD% Universal Image Quality Index (UIQI): fprintf('\n The Universal Image Quality Index (UIQI) is %0.4f\n', Q); %++++++++++++++++++++++++++++++++**************************************=========================================== %++++++++++++++++++++++++++++++++**************************************=========================================== %++++++++++++++++++++++++++++++++**************************************=========================================== %reverse algorithm to detect any manuipolation I1=NewI; R1=NewI(:,:,1); G1=NewI(:,:,2); B1=NewI(:,:,3); figure(15),imshow(uint8(R1)) figure(16),imshow(uint8(G1)) figure(17),imshow(uint8(B1)) figure(18),imshow(uint8(I1)) NewimgB1=B1; %--------------------------------------------------------------------------------------------------------------- %Encrytion processing for blue componant for i=1:4:r for j=1:4:c pb=NewimgB1(i:i+3, j:j+3); plaintext= pb; ssi; %plaintext=['A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P']; plain=reshape(plaintext,4,4); plain = double(abs (plain)); %key = ['0' '0' '6' '0' 'b' '9' '0' 'a' 'f' 'm' 'h' 'l' 'f' 'a' 'k' 'n'];%key = photo ID key=k;%Photo ID key=abs(key); w = key_expansion (key, s_box, rcon); ciphertext = cipher (plain, w, s_box, poly_mat,ind_matleft); % ciphertext = reshape(ciphertext,1,16); cb1(i:i+3, j:j+3)=ciphertext; end end ciphertext = char(cb1); Newimgcb1=cb1; figure (19),imshow(uint8(cb1)); % to extract bit no. 2 from encrypted matrix which compared with red modified EBmidsb1=bitget((cb1),2); NRM1=bitget((R1),2); db1=dec2bin (EBmidsb1); dNRM1=dec2bin(NRM1); figure(20),imshow(uint8(EBmidsb1)); figure(21),imshow(uint8(NRM1)); X1=sum(sum(abs(NRM1-EBmidsb1)));%varation between original image and manuipolated image X=corr2 (uint8(NRM1), uint8(EBmidsb1));% correlation between Extracted print signs and Calculated print signs if X==1 disp('<<<<<<<<<<<<<>>>>>>>>>>>>>>'); else disp('<<<<<<<<<<<<<<<<>>>>>>>>>>>>'); end figure (22),imshow (uint8(X)); toc;