-2

下面的代码在保存时工作正常,但是如果我尝试使用普通保存的密码对用户进行身份验证,它不会进行身份验证?当我手动将 phpldapadmin 中的密码更改为 MD5 并测试身份验证其工作时。

  1. 如何在 python 中将密码加密为 MD5 并将其保存在 LDAP 中?
  2. PHP和Python之间的MD5加密有区别吗?
def addUser(record):
    connect = ldapConnect()
    try:
        dn = "cn="+record['cn']+",ou=users,dc=example,dc=com"
        attrs = {
            "objectclass"   : ['inetOrgPerson'.encode('utf-8'),'posixAccount'.encode('utf-8'),'shadowAccount'.encode('utf-8')],
            "uid"           : [record['uid'].encode('utf-8')],
            "cn"            : [record['cn'].encode('utf-8')],
            "sn"            : [record['sn'].encode('utf-8')],
            "givenName"     : [record['givenName'].encode('utf-8')],
            "displayName"   : [record['displayName'].encode('utf-8')],
            "uidNumber"     : [record['uidNumber'].encode('utf-8')],
            "gidnumber"     : [record['gidnumber'].encode('utf-8')],
            "homeDirectory" : [record['homeDirectory'].encode('utf-8')],
            "userpassword"  : [record['userpassword'].encode('utf-8')]
        }
        connect.add_s(dn, modlist.addModlist(attrs))
        connect.unbind_s()
        return True
    except ldap.LDAPError:
        connect.unbind_s()
        return False
4

1 回答 1

0

首先,MD5 不是加密算法。它是一种加密散列算法,更准确地说,是一种抗冲突函数,它接受任意长度的消息作为输入,并返回一个可用于验证原始消息的固定长度摘要值作为输出。

所以你不能用 MD5 算法加密密码。由于 PHP 和 Python 都使用相同的算法,因此它们之间没有区别。

于 2019-06-04T04:23:08.080 回答