%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
%%            http://www.iis.ee.ethz.ch/~sha3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
clc;


N  = 4;

hashsize=256;
it = 7;

disp(['Start generating ' num2str(2) ' for Luffa'])


stm = fopen('luffa256_stimuli.asc', 'w', 'native');
exp = fopen('luffa256_expresp.asc', 'w', 'native');

% RESET Cycles

fprintf(stm, '%X %X %X %064X \n', [0 0 0 0]);
fprintf(stm, '%X %X %X %064X \n', [0 0 0 0]);
fprintf(stm, '%X %X %X %064X \n', [1 0 0 0]);
fprintf(stm, '%X %X %X %064X \n', [1 0 0 0]);


%%%%% START SIMULATION %%%%%

% ZERO INPUT ------------------------------------------------------------

% data
%Msg = dec2hex(zeros(N,1),8);

% power sim
Msg = dec2hex((2^32-1)*ones(N,1),8);

for i=1:3
   Msg=cat(2,Msg,Msg);
end
for j=1:N
    fprintf(stm, '%X %X %X %s\n', [1 1 0 Msg(j,:)]);
    
    for i=1:it,
        fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]);
    end
end

Hs = Luffa(Msg,N*256,256);
fprintf(exp, '%s\n', Hs);
    
% pad msg
pad='80';
padmsg=[pad, sprintf('%062X',0)];
fprintf(stm, '%X %X %X %s\n', [1 1 0 padmsg]);

for i=1:it
    fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]);
end

% finalization
fprintf(stm, '%X %X %X %064X\n', [1 1 0 0]);

for i=1:it
    fprintf(stm, '%X %X %X %064X\n', [1 0 1 0]);
end


% MSG SEPARATION --------------------------------------------------------

for i=1:2
    fprintf(stm, '%X %X %X %064X\n', [1 0 1 0]);
end


% % RANDOM INPUT-------------------------------------------------------------
% for i=1:8
%     rndm=dec2hex(round((2^32-1)*rand(N,1)),8); 
%     if i==1
%         Msg=rndm;
%     else
%         Msg=cat(2,Msg,rndm);
%     end
% end
% for j=1:N
%     fprintf(stm, '%X %X %X %s\n', [1 1 0 Msg(j,:)]);
%     
%     for i=1:it
%         fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]);
%     end
% end
% 
% Hs = Luffa(Msg,N*256,256);
% fprintf(exp, '%s\n', Hs);
% 
% % pad msg
% pad='80';
% padmsg=[pad, sprintf('%062X',0)];
% fprintf(stm, '%X %X %X %s\n', [1 1 0 padmsg]);
% 
% for i=1:it
%     fprintf(stm, '%X %X %X %064X\n', [1 0 0 0]);
% end
% 
% % finalization
% fprintf(stm, '%X %X %X %064X\n', [1 1 0 0]);
% 
% for i=1:it
%     fprintf(stm, '%X %X %X %064X\n', [1 0 1 0]);
% end


% END ROUND
for i=1:2,
  
  fprintf(stm, '%X %X %X %064X\n', [1 0 1 0]);
end

fclose(stm);
fclose(exp);

disp('End generation')

Generated on Fri Sep 24 10:39:12 CEST 2010
Home