IdTestMD5Hash.pas 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. unit IdTestMD5Hash;
  2. interface
  3. uses
  4. IdTest;
  5. type
  6. TIdTestMD5Hash = class(TIdTest)
  7. private
  8. procedure CheckHash(const aStr, aExpect: string);
  9. published
  10. procedure TestRFC;
  11. end;
  12. implementation
  13. uses
  14. IdHashMessageDigest,
  15. IdObjs,
  16. IdSys;
  17. procedure TIdTestMD5Hash.CheckHash(const aStr,aExpect:string);
  18. var
  19. LH:TIdHashMessageDigest5;
  20. s:string;
  21. begin
  22. LH := TIdHashMessageDigest5.Create;
  23. try
  24. s := lh.HashStringAsHex(aStr);
  25. Assert(Sys.LowerCase(s)=aExpect,aStr);
  26. finally
  27. Sys.FreeAndNil(LH);
  28. end;
  29. end;
  30. //tests specified by http://www.faqs.org/rfcs/rfc1321.html
  31. procedure TIdTestMD5Hash.TestRFC;
  32. begin
  33. CheckHash('',
  34. 'd41d8cd98f00b204e9800998ecf8427e');
  35. CheckHash('a',
  36. '0cc175b9c0f1b6a831c399e269772661');
  37. CheckHash('abc',
  38. '900150983cd24fb0d6963f7d28e17f72');
  39. CheckHash('message digest',
  40. 'f96b697d7cb7938d525a2f31aaf161d0');
  41. CheckHash('abcdefghijklmnopqrstuvwxyz',
  42. 'c3fcd3d76192e4007dfb496cca67e13b');
  43. CheckHash('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
  44. 'd174ab98d277d9f5a5611c2c9f419d9f');
  45. CheckHash('12345678901234567890123456789012345678901234567890123456789012345678901234567890',
  46. '57edf4a22be3c955ac49da2e2107b67a');
  47. end;
  48. initialization
  49. TIdTest.RegisterTest(TIdTestMD5Hash);
  50. end.