]> git.phdru.name Git - m_lib.git/blob - m_lib/md5wrapper.py
d428d55586841491926fdace564260768fdb86ef
[m_lib.git] / m_lib / md5wrapper.py
1 #! /usr/bin/env python
2 """User wrapper for md5 builtin object"""
3
4 from __future__ import print_function
5 import sys
6 if sys.version < '2.5':
7     from md5 import md5
8 else:
9     from hashlib import md5
10
11 __all__ = ['md5wrapper']
12
13 class md5wrapper:
14    def __init__(self, init=None):
15       if init:
16          self._md5 = md5(init)
17       else:
18          self._md5 = md5()
19
20    def update(self, data):
21       self._md5.update(data)
22
23    def digest(self):
24       return self._md5.digest()
25
26    def __repr__(self):
27       str = self.digest()
28       return "%02x"*len(str) % tuple(map(ord, str))
29          # This nice was suggested by Guido
30
31    def md5file(self, f):
32       if type(f) == type(''): # If f is string - use it as file's name
33          infile = open(f, 'r')
34       else:
35          infile = f           # else assume it is file or file-like object
36
37       try:
38          while 1:
39             buf = infile.read(16*1024)
40             if not buf: break
41             self.update(buf)
42
43       finally:
44          if type(f) == type(''): # If f was opened - close it
45             infile.close()
46
47 if __name__ == "__main__":
48    print("This must print exactly the string")
49    print("Test: 900150983cd24fb0d6963f7d28e17f72")
50    print("Test:", md5wrapper("abc"))