%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 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')