package fugue;
public class FugueHash {
//parse a hex string with a message
private static short[] parseStr(String msg){
short[] sMsg=new short[msg.length()/2];
for(int i=0;i0)
return null; //Message length must be a multiple of 32 bits
for(int i=0;i>7)) & 255);
/* xor with x */
x ^= s;
}
x ^= 99; /* 0x63 */
return x;
}
/*
private static short[][] AltSuperMix(short[][] U){
short[][] M={{0x01,0x01,0x07,0x04},{0x04,0x01,0x01,0x07},{0x07,0x04,0x01,0x01},{0x01,0x07,0x04,0x01}};
short[][] A=GFutils.GFmatrixmult(M,U);
GFutils.dump(A,"M*U");
short[][] B=new short[4][4];
for(int i=0;i<4;i++){ //Diagonale
for(int j=0;j<4;j++) //Spalten
if(i!=j)
B[i][i]=GFutils.GFadd(B[i][i],U[j][i]);
}
B=GFutils.GFmatrixmult(B,GFutils.GFmatrixTranspose(M));
GFutils.dump(B,"SumMatrix * M^T");
B=ROL(GFutils.GFmatrixAdd(A,B));
return B;
}
private static short[][] ROL(short[][] M){
short temp;
for(int r=0;r>(8*i));
padmsg=F256(padmsg,IV);
return padmsg;
}
}