| # Testing md5 module | |
| import warnings | |
| warnings.filterwarnings("ignore", "the md5 module is deprecated.*", | |
| DeprecationWarning) | |
| import unittest | |
| from md5 import md5 | |
| from test import test_support | |
| def hexstr(s): | |
| import string | |
| h = string.hexdigits | |
| r = '' | |
| for c in s: | |
| i = ord(c) | |
| r = r + h[(i >> 4) & 0xF] + h[i & 0xF] | |
| return r | |
| class MD5_Test(unittest.TestCase): | |
| def md5test(self, s, expected): | |
| self.assertEqual(hexstr(md5(s).digest()), expected) | |
| self.assertEqual(md5(s).hexdigest(), expected) | |
| def test_basics(self): | |
| eq = self.md5test | |
| eq('', 'd41d8cd98f00b204e9800998ecf8427e') | |
| eq('a', '0cc175b9c0f1b6a831c399e269772661') | |
| eq('abc', '900150983cd24fb0d6963f7d28e17f72') | |
| eq('message digest', 'f96b697d7cb7938d525a2f31aaf161d0') | |
| eq('abcdefghijklmnopqrstuvwxyz', 'c3fcd3d76192e4007dfb496cca67e13b') | |
| eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', | |
| 'd174ab98d277d9f5a5611c2c9f419d9f') | |
| eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890', | |
| '57edf4a22be3c955ac49da2e2107b67a') | |
| def test_hexdigest(self): | |
| # hexdigest is new with Python 2.0 | |
| m = md5('testing the hexdigest method') | |
| h = m.hexdigest() | |
| self.assertEqual(hexstr(m.digest()), h) | |
| def test_large_update(self): | |
| aas = 'a' * 64 | |
| bees = 'b' * 64 | |
| cees = 'c' * 64 | |
| m1 = md5() | |
| m1.update(aas) | |
| m1.update(bees) | |
| m1.update(cees) | |
| m2 = md5() | |
| m2.update(aas + bees + cees) | |
| self.assertEqual(m1.digest(), m2.digest()) | |
| def test_main(): | |
| test_support.run_unittest(MD5_Test) | |
| if __name__ == '__main__': | |
| test_main() |