LDAP密码encryption(userPassword属性)

我试图将密码从LDAP导入到MySQL数据库。 当我看着已知密码testuserPassword属性,我得到这个:

 userPassword:: e01ENX1DWTlyelVZaDAzUEszazZESmllMDlnPT0= 

在这个阶段的密码是base64编码,解码后我得到这个:

 {MD5}CY9rzUYh03PK3k6DJie09g== 

– 它看起来不像CY9....string是MD5哈希,因为它不是32个字符(实际上是128位)。
– 它似乎没有base64编码,因为我没有得到解码后的test
– 当我生成我自己的MD5哈希test我得到098f6bcd4621d373cade4e832627b4f6

我发现这个perl脚本 (页面上的第二个),它会从test中生成{MD5}CY9rzUYh03PK3k6DJie09g== ,但是当我查看脚本时,我看不到我所缺less的内容,因为它看起来像md5哈希base64在与{MD5}连接之前进行编码:

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

有人可以解释从testCY9rzUYh03PK3k6DJie09g==的步骤吗?

你有没有检查PHP md5()函数的第二个参数?

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

你应该使用原始的二进制格式(这就是为什么用base64编码)。