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