equal
deleted
inserted
replaced
1 ######################################################### |
1 ######################################################### |
2 """ |
2 """ |
3 |
3 XXX clarify this header |
4 :organization: Logilab |
4 :organization: Logilab |
5 :copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2. |
|
6 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr |
5 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr |
7 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses |
|
8 """ |
6 """ |
9 # md5crypt.py |
7 # md5crypt.py |
10 # |
8 # |
11 # 0423.2000 by michal wallace http://www.sabren.com/ |
9 # 0423.2000 by michal wallace http://www.sabren.com/ |
12 # based on perl's Crypt::PasswdMD5 by Luis Munoz (lem@cantv.net) |
10 # based on perl's Crypt::PasswdMD5 by Luis Munoz (lem@cantv.net) |
56 n = n - 1 |
54 n = n - 1 |
57 ret = ret + ITOA64[v & 0x3f] |
55 ret = ret + ITOA64[v & 0x3f] |
58 v = v >> 6 |
56 v = v >> 6 |
59 return ret |
57 return ret |
60 |
58 |
61 |
|
62 def crypt(pw, salt, magic=None): |
59 def crypt(pw, salt, magic=None): |
|
60 if isinstance(pw, unicode): |
|
61 pw = pw.encode('utf-8') |
63 if magic is None: |
62 if magic is None: |
64 magic = MAGIC |
63 magic = MAGIC |
65 # Take care of the magic string if present |
64 # Take care of the magic string if present |
66 if salt[:len(magic)] == magic: |
65 if salt[:len(magic)] == magic: |
67 salt = salt[len(magic):] |
66 salt = salt[len(magic):] |