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

rnd    = 0;
nmax   = 2;
N      = 1;


R      = 36;  % 35 Rounds

disp(['Start generating ' num2str(N) ' messages for JH-256'])


stm = fopen(['jh_stimuli.asc'], 'w', 'native');
exp = fopen(['jh_expresp.asc'], 'w', 'native');

% RESET Cycles

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

%Test environment
%   

% M=zeros(1,64);
% M(1,1)=128;
% n=1;
% 
% hash = jh256_hash(M,n);
%     
% for k=0:n-1
%     if k==0,
%         fprintf(stm, '%X %X ',[1 1]);
%     else
%         fprintf(stm, '%X %X ',[1 1]);
%     end
%     
%     fprintf(stm, '%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X \n', M(1,1+k*64:(64+k*64)));
%     fprintf(stm, '\n');
%     for ii=1:R-1,
%         fprintf(stm, '%X %X %0128X\n', [1 0 0]);
%     end
% end
%   fprintf(stm, '%X %X %0128X\n',[1 0 0]);
%   fprintf(stm, '%X %X %0128X\n',[1 0 0]);
%   fprintf(exp, '%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\n', hash);
%   fprintf(exp, '\n');  



%%%%% START SIMULATION %%%%%
% RANDOM INPUT
% -------------------------------------------------------------

for j=1:N;
    
  if rnd == 0,
      n = nmax;
  else
      n = ceil(nmax*rand(1));
  end
        
  M = round((2^8-1)*rand(1,64*n)); %Create random message
  
  n = 2;
  M = round((2^8-1)*ones(1,64*n));
  hash = jh256_hash(M,n);
    
  for k=0:n-1
    fprintf(stm, '%X %X ',[1 1]);
    fprintf(stm, '%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\n', M(1,1+k*64:64+k*64));
    fprintf(stm, '\n');
    for ii=1:R-1,
        fprintf(stm, '%X %X %0128X\n', [1 0 0]);
    end
  end
  fprintf(stm, '%X %X %0128X\n',[1 0 0]);
  fprintf(stm, '%X %X %0128X\n',[1 0 0]);
  fprintf(exp, '%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X', hash);
  fprintf(exp, '\n');
    
end

% END RANDOM INPUT -------------------------------------------------------------

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

fclose(stm);
fclose(exp);

disp('End generation')

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