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==
吗?
你检查过 PHP md5() 函数的第二个参数吗?
cat md5.php
<?php echo base64_encode(md5('test',true));
php md5.php
CY9rzUYh03PK3k6DJie09g==
Run Code Online (Sandbox Code Playgroud)
您应该使用原始二进制格式(这就是它使用 base64 编码的原因)。