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

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

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


stm = fopen(['SIMD256_stimuli.asc'], 'w', 'native');
exp = fopen(['SIMD256_expresp.asc'], 'w', 'native');

% RESET Cycles

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

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

% RANDOM INPUT -------------------------------------------------------------
for j=1:N,
    
  if rnd == 0,
      n = nmax+1;
  else
      n = ceil(nmax*rand(1))+1;
  end
    
  Mi = round(255*rand(n,64));
%   Mi = round(255*zeros(n,64));
%   Mi(2,1)=2;

  % power sim
  n = 10;
  Mi = round(255*ones(10,64));
  
  H = SIMD_hash(Mi);
  
  for i=1:n-1,
      
    M = zeros(1,16);
    for k=1:16
        M(k) = Mi(i,(k-1)*4 + 4)*2^24 + Mi(i,(k-1)*4 + 3)*2^16 + Mi(i,(k-1)*4 + 2)*2^8 + Mi(i,(k-1)*4 + 1)*2^0;
    end
    
    fprintf(stm, '%X %X %X %08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X\n', 1, 1, 0, M);
    
    
    for ii=1:35,
        fprintf(stm, '%X %X %X %0128X\n', [1 0 0 0]);
    end
  end
  
  M = zeros(1,16);
  for k=1:16
      M(k) = Mi(end,(k-1)*4 + 4)*2^24 + Mi(end,(k-1)*4 + 3)*2^16 + Mi(end,(k-1)*4 + 2)*2^8 + Mi(end,(k-1)*4 + 1)*2^0;
  end
  
  fprintf(stm, '%X %X %X %08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X%08X\n', 1, 1, 1, M);

  for ii=1:35,
    fprintf(stm, '%X %X %X %0128X\n', [1 0 1 0]);
  end
  
  
  fprintf(exp, '%08X%08X%08X%08X%08X%08X%08X%08X\n', H);
  
  for ii=1:40,
    fprintf(stm, '%X %X %X %0128X\n', [1 0 0 0]);
  end

end

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

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

fclose(stm);
fclose(exp);

disp('End generation')

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