| md5_HH(a, b, c, d, x[k + 5], S31, $FFFA3942); md5_HH(d, a, b, c, x[k + 8], S32, $8771F681); md5_HH(c, d, a, b, x[k + 11], S33, $6D9D6122); md5_HH(b, c, d, a, x[k + 14], S34, $FDE5380C); md5_HH(a, b, c, d, x[k + 1], S31, $A4BEEA44); md5_HH(d, a, b, c, x[k + 4], S32, $4BDECFA9); md5_HH(c, d, a, b, x[k + 7], S33, $F6BB4B60); md5_HH(b, c, d, a, x[k + 10], S34, $BEBFBC70); md5_HH(a, b, c, d, x[k + 13], S31, $289B7EC6); md5_HH(d, a, b, c, x[k + 0], S32, $EAA127FA); md5_HH(c, d, a, b, x[k + 3], S33, $D4EF3085); md5_HH(b, c, d, a, x[k + 6], S34, $4881D05); md5_HH(a, b, c, d, x[k + 9], S31, $D9D4D039); md5_HH(d, a, b, c, x[k + 12], S32, $E6DB99E5); md5_HH(c, d, a, b, x[k + 15], S33, $1FA27CF8); md5_HH(b, c, d, a, x[k + 2], S34, $C4AC5665); md5_II(a, b, c, d, x[k + 0], S41, $F4292244); md5_II(d, a, b, c, x[k + 7], S42, $432AFF97); md5_II(c, d, a, b, x[k + 14], S43, $AB9423A7); md5_II(b, c, d, a, x[k + 5], S44, $FC93A039); md5_II(a, b, c, d, x[k + 12], S41, $655B59C3); md5_II(d, a, b, c, x[k + 3], S42, $8F0CCC92); md5_II(c, d, a, b, x[k + 10], S43, $FFEFF47D); md5_II(b, c, d, a, x[k + 1], S44, $85845DD1); md5_II(a, b, c, d, x[k + 8], S41, $6FA87E4F); md5_II(d, a, b, c, x[k + 15], S42, $FE2CE6E0); md5_II(c, d, a, b, x[k + 6], S43, $A3014314); md5_II(b, c, d, a, x[k + 13], S44, $4E0811A1); md5_II(a, b, c, d, x[k + 4], S41, $F7537E82); md5_II(d, a, b, c, x[k + 11], S42, $BD3AF235); md5_II(c, d, a, b, x[k + 2], S43, $2AD7D2BB); md5_II(b, c, d, a, x[k + 9], S44, $EB86D391); a := a + AA; b := b + BB; c := c + CC; d := d + DD; k := k + 16; until k > High(x); if sType then begin s := WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d) end else begin s := WordToHex(b) + WordToHex(c); end; Result := StrLower(PAnsiChar(s)); end; class function sMD5.RotateLeft(const lValue, Bits: longword): longword; begin Result := (lValue shl Bits) Or (lValue shr (32 - Bits)); end; class function sMD5.WordToHex(const lValue: longword): string; var s: string; begin s := inttohex(lValue, 8); Result := s[7]+s[8]+s[5]+s[6]+s[3]+s[4]+s[1]+s[2]; end; end. |