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