md5crypt.py
branch3.5
changeset 3316 c4c07aab1c39
parent 3149 c6a85fafb155
child 5421 8167de96c523
equal deleted inserted replaced
3314:cfa77453e742 3316:c4c07aab1c39
     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):]