Я пытаюсь импортировать пароли из 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).