| var k: integer; AA, BB, CC, DD, a, b, c, d: longword; x: arrlongword; s: string; { functions } function md5_F(const x, y, z: longword): longword; begin Result := (x And y) Or ((Not x) And z); end; function md5_G(const x, y, z: longword): longword; begin Result := (x And z) Or (y And (Not z)); end; function md5_H(const x, y, z: longword): longword; begin Result := (x Xor y Xor z); end; function md5_I(const x, y, z: longword): longword; begin Result := (y Xor (x Or (Not z))); end; procedure md5_FF(var a: longword; const b, c, d, x, s, ac: longword); begin a := a + md5_F(b, c, d) + x + ac; a := RotateLeft(a, s); a := a + b; end; procedure md5_GG(var a: longword; const b, c, d, x, s, ac: longword); begin a := a + md5_G(b, c, d) + x + ac; a := RotateLeft(a, s); a := a + b; end; procedure md5_HH(var a: longword; const b, c, d, x, s, ac: longword); begin a := a + md5_H(b, c, d) + x + ac; a := RotateLeft(a, s); a := a + b; end; |