%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
%%            http://www.iis.ee.ethz.ch/~sha3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function hv = cubehash(m,h,r,b)


% -- INITIALIZATION -------------------------------------------------------
x = zeros(1,32);
x(1) = h/8;
x(2) = b;
x(3) = r;

for i=1:10*r,
    x = roundr(x);
end

% -- PROCESS --------------------------------------------------------------
for i=1:size(m,1),
    
    for k=1:b*8/32
        x(k) = bitxor(x(k), m(i,k));
    end
    for j=1:r,
        x = roundr(x);
    end
end

% -- FINALIZATION ---------------------------------------------------------
x(32) = bitxor(x(32), hex2dec('00000001'));

for i=1:10*r,
    x = roundr(x);
end

% -- OUTPUT ---------------------------------------------------------------
hv = zeros(1,h/8);
for i=1:h/32,
    hv(4*i-3) = bitshift(bitand(x(i),hex2dec('000000FF')), -0);
    hv(4*i-2) = bitshift(bitand(x(i),hex2dec('0000FF00')), -8);
    hv(4*i-1) = bitshift(bitand(x(i),hex2dec('00FF0000')), -16);
    hv(4*i)   = bitshift(bitand(x(i),hex2dec('FF000000')), -24);
end

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