Назад | Перейти на главную страницу

Шифрование паролей LDAP (атрибут userPassword)

Я пытаюсь импортировать пароли из LDAP в базу данных MySQL. Когда я смотрю на userPassword атрибут известного пароля test Я получаю это:

userPassword:: e01ENX1DWTlyelVZaDAzUEszazZESmllMDlnPT0=

Пароль на этом этапе: base64 закодировано, после декодирования я получаю следующее:

{MD5}CY9rzUYh03PK3k6DJie09g==

-Это не похоже на 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,'');

Может кто-нибудь объяснить шаг, от которого нужно добраться test к CY9rzUYh03PK3k6DJie09g==?

Вы проверили второй параметр функции PHP md5 ()?

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

php md5.php 
CY9rzUYh03PK3k6DJie09g==

Вы должны использовать необработанный двоичный формат (и поэтому он был закодирован с помощью base64).