%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
%%            http://www.iis.ee.ethz.ch/~sha3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
XL = xor(xor(xor(Qb(16+1,:),Qb(17+1,:)),xor(Qb(18+1,:),Qb(19+1,:))),xor(xor(Qb(20+1,:),Qb(21+1,:)),xor(Qb(22+1,:),Qb(23+1,:))));
XH = xor(XL, xor(xor(xor(Qb(24+1,:),Qb(25+1,:)),xor(Qb(26+1,:),Qb(27+1,:))),xor(xor(Qb(28+1,:),Qb(29+1,:)),xor(Qb(30+1,:),Qb(31+1,:)))));

H = zeros(8,1);
clear Hb;

H(0+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        xor(xor([XH(6:32) zeros(1,5)], [zeros(1,5) Qb(16+1,1:27)]), Mb(0+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XL, Qb(24+1,:)), Qb(0+1,:)))), 2^32);
H(1+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,7) XH(1:25)], [Qb(17+1,9:32) zeros(1,8)]), Mb(1+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XL, Qb(25+1,:)), Qb(1+1,:)))), 2^32);
H(2+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,5) XH(1:27)], [Qb(18+1,6:32) zeros(1,5)]), Mb(2+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XL, Qb(26+1,:)), Qb(2+1,:)))), 2^32);
H(3+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,1) XH(1:31)], [Qb(19+1,6:32) zeros(1,5)]), Mb(3+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XL, Qb(27+1,:)), Qb(3+1,:)))), 2^32);
H(4+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,3) XH(1:29)], Qb(20+1,:)), Mb(4+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XL, Qb(28+1,:)), Qb(4+1,:)))), 2^32);
H(5+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        xor(xor([XH(7:32) zeros(1,6)], [zeros(1,6) Qb(21+1,1:26)]), Mb(5+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XL, Qb(29+1,:)), Qb(5+1,:)))), 2^32);
H(6+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,4) XH(1:28)], [Qb(22+1,7:32) zeros(1,6)]), Mb(6+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XL, Qb(30+1,:)), Qb(6+1,:)))), 2^32);
H(7+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,11) XH(1:21)], [Qb(23+1,3:32) zeros(1,2)]), Mb(7+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XL, Qb(31+1,:)), Qb(7+1,:)))), 2^32);

Hb = num2bin(qnt32,H(:));
Hb = str2num(Hb(:));
Hb = reshape(Hb, 8, 32);

H = [H; zeros(8,1)];

H(8+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        circshift(Hb(4+1,:),[0 -9]))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XH, Qb(24+1,:)), Mb(8+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor([XL(9:32) zeros(1,8)], Qb(23+1,:)), Qb(8+1,:)))), 2^32);
H(9+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        circshift(Hb(5+1,:),[0 -10]))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XH, Qb(25+1,:)), Mb(9+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,6) XL(1:26)], Qb(16+1,:)), Qb(9+1,:)))), 2^32);
H(10+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        circshift(Hb(6+1,:),[0 -11]))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XH, Qb(26+1,:)), Mb(10+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor([XL(7:32) zeros(1,6)], Qb(17+1,:)), Qb(10+1,:)))), 2^32);
H(11+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        circshift(Hb(7+1,:),[0 -12]))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XH, Qb(27+1,:)), Mb(11+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor([XL(5:32) zeros(1,4)], Qb(18+1,:)), Qb(11+1,:)))), 2^32);
H(12+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        circshift(Hb(0+1,:),[0 -13]))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XH, Qb(28+1,:)), Mb(12+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,3) XL(1:29)], Qb(19+1,:)), Qb(12+1,:)))), 2^32);
H(13+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        circshift(Hb(1+1,:),[0 -14]))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XH, Qb(29+1,:)), Mb(13+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,4) XL(1:28)], Qb(20+1,:)), Qb(13+1,:)))), 2^32);
H(14+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        circshift(Hb(2+1,:),[0 -15]))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XH, Qb(30+1,:)), Mb(14+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,7) XL(1:25)], Qb(21+1,:)), Qb(14+1,:)))), 2^32);
H(15+1) = mod(bin2num(qnt32,sprintf('%-1d',...
        circshift(Hb(3+1,:),[0 -16]))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor(XH, Qb(31+1,:)), Mb(15+1,:)))) + bin2num(qnt32,sprintf('%-1d',...
        xor(xor([zeros(1,2) XL(1:30)], Qb(22+1,:)), Qb(15+1,:)))), 2^32);

    
Hb = num2bin(qnt32,H(:));
Hb = str2num(Hb(:));
Hb = reshape(Hb, 16, 32);

    
    

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