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


N  = 4;

nmax = 10;
hashsize=256;
it = 23;

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 k=1:N
%     n = ceil(nmax*rand);
%     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
% end
fclose(stm);
fclose(exp);

disp('End generation')

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