%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
%%            http://www.iis.ee.ethz.ch/~sha3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function h = SIMD_hash(M)

S = [...
hex2dec('4d567983') hex2dec('07190ba9') hex2dec('8474577b') hex2dec('39d726e9');...
hex2dec('aaf3d925') hex2dec('3ee20b03') hex2dec('afd5e751') hex2dec('c96006d3');...
hex2dec('c2c2ba14') hex2dec('49b3bcb4') hex2dec('f67caf46') hex2dec('668626c9');...
hex2dec('e2eaa8d2') hex2dec('1ff47833') hex2dec('d0c661a5') hex2dec('55693de1')]';

for i=1:size(M,1)-1
    S = SIMD_compress(S,M(i,:), 0);
end

disp(' '); disp('----------------------'); disp(' ');

S = SIMD_compress(S, M(end,:), 1);

% Truncate
for i=1:4,
    h(i) = bitshift(bitand(S(i,1), hex2dec('FF')), 24) + bitshift(bitand(S(i,1), hex2dec('FF00')), 8) + ...
           bitshift(bitand(S(i,1), hex2dec('FF0000')), -8) + bitshift(bitand(S(i,1), hex2dec('FF000000')), -24);
       
    h(i+4) = bitshift(bitand(S(i,2), hex2dec('FF')), 24) + bitshift(bitand(S(i,2), hex2dec('FF00')), 8) + ...
             bitshift(bitand(S(i,2), hex2dec('FF0000')), -8) + bitshift(bitand(S(i,2), hex2dec('FF000000')), -24);
end

fprintf('\n%08X%08X%08X%08X%08X%08X%08X%08X\n\n', h)

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