Шифрование паролей LDAP (атрибут userPassword)
Я пытаюсь импортировать пароли из LDAP в базу данных MySQL. Когда я смотрю на userPassword
атрибут для известного пароля test
Я получаю это:
userPassword:: e01ENX1DWTlyelVZaDAzUEszazZESmllMDlnPT0=
Пароль на этом этапе base64
закодированный, после декодирования я получаю это:
{MD5}CY9rzUYh03PK3k6DJie09g==
-Это не похоже на CY9....
string является хешем 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,'');
Может кто-нибудь объяснить шаг, чтобы получить от test
в CY9rzUYh03PK3k6DJie09g==
?
1 ответ
Вы проверили второй параметр функции PHP md5()?
cat md5.php
<?php echo base64_encode(md5('test',true));
php md5.php
CY9rzUYh03PK3k6DJie09g==
Вы должны использовать сырой двоичный формат (и именно поэтому он был закодирован с base64).