test_md5.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # Testing md5 module
  2. import warnings
  3. warnings.filterwarnings("ignore", "the md5 module is deprecated.*",
  4. DeprecationWarning)
  5. import unittest
  6. from md5 import md5
  7. from test import test_support
  8. def hexstr(s):
  9. import string
  10. h = string.hexdigits
  11. r = ''
  12. for c in s:
  13. i = ord(c)
  14. r = r + h[(i >> 4) & 0xF] + h[i & 0xF]
  15. return r
  16. class MD5_Test(unittest.TestCase):
  17. def md5test(self, s, expected):
  18. self.assertEqual(hexstr(md5(s).digest()), expected)
  19. self.assertEqual(md5(s).hexdigest(), expected)
  20. def test_basics(self):
  21. eq = self.md5test
  22. eq('', 'd41d8cd98f00b204e9800998ecf8427e')
  23. eq('a', '0cc175b9c0f1b6a831c399e269772661')
  24. eq('abc', '900150983cd24fb0d6963f7d28e17f72')
  25. eq('message digest', 'f96b697d7cb7938d525a2f31aaf161d0')
  26. eq('abcdefghijklmnopqrstuvwxyz', 'c3fcd3d76192e4007dfb496cca67e13b')
  27. eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
  28. 'd174ab98d277d9f5a5611c2c9f419d9f')
  29. eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890',
  30. '57edf4a22be3c955ac49da2e2107b67a')
  31. def test_hexdigest(self):
  32. # hexdigest is new with Python 2.0
  33. m = md5('testing the hexdigest method')
  34. h = m.hexdigest()
  35. self.assertEqual(hexstr(m.digest()), h)
  36. def test_large_update(self):
  37. aas = 'a' * 64
  38. bees = 'b' * 64
  39. cees = 'c' * 64
  40. m1 = md5()
  41. m1.update(aas)
  42. m1.update(bees)
  43. m1.update(cees)
  44. m2 = md5()
  45. m2.update(aas + bees + cees)
  46. self.assertEqual(m1.digest(), m2.digest())
  47. def test_main():
  48. test_support.run_unittest(MD5_Test)
  49. if __name__ == '__main__':
  50. test_main()