%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
%%            http://www.iis.ee.ethz.ch/~sha3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [ga,gb,gc,gd] = g(a,b,c,d, m, j, i, p)
  
  a = mod(a + bitxor(m(p.P(j,2*i+1)), p.K(p.P(j,2*i+2))), 2^p.w);
  a = mod(a + b, 2^p.w);
  
  d = bin2dec(dec2bin(circshift((double(dec2bin(bitxor(d,a),p.w))-48),[0 16]))');
  
  c = mod(c + d,2^p.w);
  
  b = bin2dec(dec2bin(circshift((double(dec2bin(bitxor(b,c),p.w))-48),[0 12]))');
  
  %disp(dec2hex(a, 8)); disp(dec2hex(b, 8)); disp(dec2hex(c, 8)); disp(dec2hex(d, 8)); disp(' ');
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  a = mod(a + b + bitxor(m(p.P(j,2*i+2)), p.K(p.P(j,2*i+1))), 2^p.w);
  
  d = bin2dec(dec2bin(circshift((double(dec2bin(bitxor(d,a),p.w))-48),[0 8]))');
  
  c = mod(c + d,2^p.w);
  
  b = bin2dec(dec2bin(circshift((double(dec2bin(bitxor(b,c),p.w))-48),[0 7]))');
  
  %disp(dec2hex(a, 8)); disp(dec2hex(b, 8)); disp(dec2hex(c, 8)); disp(dec2hex(d, 8)); disp(' ');
  
  ga = a;
  gb = b;
  gc = c;
  gd = d;

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