%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich %% http://www.iis.ee.ethz.ch/~sha3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear; clc; N=1; it=23; hashsize=256; rate=1088; capacity=512; d=32; databitlen=N*rate; block_len=64; block_num=(rate+capacity)/block_len; disp(['Start generating ' num2str(3) ' test vectors for Keccak']) stm = fopen('keccak256_stimuli.asc', 'w', 'native'); exp = fopen('keccak256_expresp.asc', 'w', 'native'); % RESET Cycles fprintf(stm, '%X %X %X %0272X \n', [0 0 0 0]); fprintf(stm, '%X %X %X %0272X \n', [0 0 0 0]); fprintf(stm, '%X %X %X %0272X \n', [1 0 0 0]); fprintf(stm, '%X %X %X %0272X \n', [1 0 0 0]); %%%%% START SIMULATION %%%%% % ZERO INPUT ------------------------------------------------------------ % %data % Msg = dec2hex(zeros(N,1),8); % for i=1:5 % Msg=cat(2,Msg,Msg); % end % Msg=cat(2,Msg,dec2hex(zeros(N,1),8)); % Msg=cat(2,Msg,dec2hex(zeros(N,1),8)); % 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 %0272X\n', [1 0 0 0]); % end % end % % % Hs = Keccak256(Msg, databitlen); % fprintf(exp, '%s\n', Hs); % % % % final round % pad='01'; % enc_d=enc(d,8); % enc_r=enc(rate/8,8); % finalstate=[pad, enc_d, enc_r, pad, sprintf('%0264X',0)]; % % % fprintf(stm, '%X %X %X %s\n', [1 1 0 finalstate]); % % for i=1:it % % fprintf(stm, '%X %X %X %0272X\n', [1 0 1 0]); % end % % % MSG SEPARATION -------------------------------------------------------- % % for i=1:2, % % fprintf(stm, '%X %X %X %0272X\n', [1 0 1 0]); % end % ONE INPUT --------------------------------------------------------------- % data Msg = dec2hex(ones(N,1)*(2^32-1),8); for i=1:5 Msg=cat(2,Msg,Msg); end Msg=cat(2,Msg,dec2hex(ones(N,1)*(2^32-1),8)); Msg=cat(2,Msg,dec2hex(ones(N,1)*(2^32-1),8)); 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 %0272X\n', [1 0 0 0]); end end Hs = Keccak256(Msg, databitlen); fprintf(exp, '%s\n', Hs); % final round pad='01'; enc_d=enc(d,8); enc_r=enc(rate/8,8); finalstate=[pad, enc_d, enc_r, pad, sprintf('%0264X',0)]; fprintf(stm, '%X %X %X %s\n', [1 1 0 finalstate]); for i=1:it fprintf(stm, '%X %X %X %0272X\n', [1 0 1 0]); end % MSG SEPARATION -------------------------------------------------------- for i=1:2, fprintf(stm, '%X %X %X %0272X\n', [1 0 1 0]); end % RANDOM INPUT------------------------------------------------------------- % for i=1:32 % rndm=dec2hex(round((2^32-1)*rand(N,1)),8); % if i==1 % Msg=rndm; % else % Msg=cat(2,Msg,rndm); % end % end % % Msg=cat(2,Msg,rndm); % Msg=cat(2,Msg,rndm); % % 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 %0272X\n', [1 0 0 0]); % end % end % % Hs = Keccak256(Msg,databitlen); % fprintf(exp, '%s\n', Hs); % % % final round % fprintf(stm, '%X %X %X %s\n', [1 1 0 finalstate]); % % for i=1:it % % fprintf(stm, '%X %X %X %0272X\n', [1 0 1 0]); % end % % % END ROUND % for i=1:2, % % fprintf(stm, '%X %X %X %0272X\n', [1 0 1 0]); % end fclose(stm); fclose(exp); disp('End generation')