LDAPからMySQLデータベースにパスワードをインポートしようとしています。既知のパスワードuserPassword
のtest
属性を見ると、次のようになります。
userPassword:: e01ENX1DWTlyelVZaDAzUEszazZESmllMDlnPT0=
この段階でのパスワードはbase64
でエンコードされていますが、デコードすると次のようになります。
{MD5}CY9rzUYh03PK3k6DJie09g==
-CY9....
文字列は32文字の長さ(実際には128ビット)ではないため、MD5ハッシュのようには見えません。
-デコード後にtest
が取得されないため、base64
でエンコードされていないようです。
-また、test
から独自のMD5
ハッシュを生成すると、098f6bcd4621d373cade4e832627b4f6
が得られます。
このPerlスクリプト (ページの2番目のスクリプト)はtest
から{MD5}CY9rzUYh03PK3k6DJie09g==
を生成しますが、スクリプトを見ると、自分が何であるかがわかりません。 md5
ハッシュがbase64
と連結される前に、{MD5}
がエンコードされているように見えるため、欠落しています。
$ctx = Digest::MD5->new;
$ctx->add('secret');
$hashedPasswd = '{MD5}' . encode_base64($ctx->digest,'');
誰かがtest
からCY9rzUYh03PK3k6DJie09g==
に移動する手順を説明できますか?
PHP md5()関数の2番目のパラメーターを確認しましたか?
cat md5.php
<?php echo base64_encode(md5('test',true));
php md5.php
CY9rzUYh03PK3k6DJie09g==
生のバイナリ形式を使用する必要があります(そのため、base64でエンコードされています)。