PHP实现LDAP中SHA,SSHA,MD5加密方法

来源:互联网 发布:重做系统后数据恢复 编辑:程序博客网 时间:2024/05/24 06:40

  前几天因为工作的关系,需要使用PHP模拟LDAP中的SHA,SSHA,MD5的加密方法,本来以为直接使用sh1(),md5()这样的方法就可以实现,可是这样写完了以后发现生成的加密字符串,在LDAP中解密是错误的,后来查了查资料才发现,LDAP中SHA,SSHA,MD5加密方法是经过了特殊处理的,具体如下:

SHA加密方法

 /**
  * SHA加密
  * @param $password  需要加密的字符串
     * @return 返回加密号的字符串
  * */
 public function ldap_sha($password)
 {
  $ldap_passwd = “{SHA}”.base64_encode(pack(“H*”, sha1($password)));
  return $ldap_passwd;
 }

SSHA加密方法:

  /**
     * SSHA加密算法
     * @param $password  需要加密的字符串
     * @return 返回加密号的字符串
     * */
    public 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;
 }

MD5加密方法:

 /**
  * MD5加密
  * @param $password  需要加密的字符串
     * @return 返回加密号的字符串
  * */
 public function ldap_md5($password)
 {
        $md5 = “{MD5}”.base64_encode(pack( ‘H*’,md5($password)));
        return $md5;
 }

参考:http://www.xiaolangspace.com/archives/22

原创粉丝点击