Você verificou o segundo parâmetro da função PHP md5 ()?
cat md5.php
<?php echo base64_encode(md5('test',true));
php md5.php
CY9rzUYh03PK3k6DJie09g==
Você deve usar o formato binário bruto (e é por isso que foi codificado com base64).
Estou tentando importar senhas de um LDAP para um banco de dados MySQL. Quando olho para o atributo userPassword
da senha conhecida test
, recebo isto:
userPassword:: e01ENX1DWTlyelVZaDAzUEszazZESmllMDlnPT0=
A senha neste estágio é base64
codificada, depois da decodificação eu recebo isto:
{MD5}CY9rzUYh03PK3k6DJie09g==
-Não parece que a string CY9....
seja um hash MD5 porque não tem 32 caracteres (na verdade 128 bits).
-Ele não parece ser base64
codificado porque não recebo test
após a decodificação.
-Além disso, quando eu gerar meu próprio MD5
hash de test
, recebo 098f6bcd4621d373cade4e832627b4f6
.
Eu encontrei este script perl (segundo na página) que gera {MD5}CY9rzUYh03PK3k6DJie09g==
de test
, mas quando olho para o script, não vejo o que está faltando, pois parece que o md5
hash recebe base64
codificado antes de ser concatenado com {MD5}
:
$ctx = Digest::MD5->new;
$ctx->add('secret');
$hashedPasswd = '{MD5}' . encode_base64($ctx->digest,'');
Alguém pode explicar a etapa para ir de test
a CY9rzUYh03PK3k6DJie09g==
?