LDAP 密码加密(userPassword 属性)

LDAP 密码加密(userPassword 属性)

我正在尝试将密码从 LDAP 导入到 MySQL 数据库。当我查看userPassword已知密码的属性时test,我得到了以下信息:

userPassword:: e01ENX1DWTlyelVZaDAzUEszazZESmllMDlnPT0=

此阶段的密码是base64编码的,解码后得到以下结果:

{MD5}CY9rzUYh03PK3k6DJie09g==

- 该字符串看起来不像CY9....是 MD5 哈希,因为它的长度不是 32 个字符(实际上是 128 位)。-
它似乎也没有被编码,因为解码后base64我也没有得到。- 此外,当我生成自己的哈希时,我得到了。test
MD5test098f6bcd4621d373cade4e832627b4f6

我发现这个 perl 脚本(页面上的第二个)确实是{MD5}CY9rzUYh03PK3k6DJie09g==从生成的test,但是当我查看脚本时,我没有看到我遗漏了什么,因为它看起来像是哈希在与以下内容连接之前md5被编码了:base64{MD5}

$ctx = Digest::MD5->new;
$ctx->add('secret');
$hashedPasswd = '{MD5}' . encode_base64($ctx->digest,'');

test有人可以解释一下从 到的步骤CY9rzUYh03PK3k6DJie09g==吗?

答案1

您是否检查过 PHP md5() 函数的第二个参数?

cat md5.php 
<?php echo base64_encode(md5('test',true));

php md5.php 
CY9rzUYh03PK3k6DJie09g==

您应该使用原始二进制格式(这就是使用 base64 编码的原因)。

相关内容