用PHP实现LDAP的三种常见加密算法:SHASSHAMD5

参考openldap官方提供的加密原理和实现方法:http://www.openldap.org/faq/data/cache/347.html,这篇博客提供了具体的实现方法:http://blog.csdn.net/moonx/article/details/6408765

实现代码:

/**
 * ldap SHA加密算法
 * @param  [type] $password 加密前字符串
 * @return [type]           加密后字符串
 */
function ldap_sha($password)
{
    $ldap_passwd = "{SHA}".base64_encode(pack("H*", sha1($password)));
    return $ldap_passwd;
}

/**
 * ldap SSHA加密算法
 * @param  [type] $password 加密前字符串
 * @return [type]           加密后字符串
 */
function ldap_ssha($password)
{
    $salt = "";
    for ($i=1; $i<=10; $i++)
    {
        $salt .= substr('0123456789abcdef',rand(0,15),1);
    }
    $hash = "{SSHA}" . base64_encode(pack("H*",sha1($password.$salt)).$salt);
    return $hash;
}

/**
 * ldap MD5加密算法
 * @param  [type] $password 加密前字符串
 * @return [type]           加密后字符串
 */
function ldap_md5($password)
{
    $md5 = "{MD5}".base64_encode(pack( 'H*',md5($password)));
    return $md5;
}