LDAP 密码加密(userPassword 属性)

Max*_*Max 6 password ldap perl md5

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

userPassword:: e01ENX1DWTlyelVZaDAzUEszazZESmllMDlnPT0=
Run Code Online (Sandbox Code Playgroud)

此阶段的密码已base64编码,解码后我得到:

{MD5}CY9rzUYh03PK3k6DJie09g==
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Gio*_*ldo 4

你检查过 PHP md5() 函数的第二个参数吗?

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

php md5.php 
CY9rzUYh03PK3k6DJie09g==
Run Code Online (Sandbox Code Playgroud)

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