web-dev-qa-db-ja.com

LDAPパスワードの暗号化(userPassword属性)

LDAPからMySQLデータベースにパスワードをインポートしようとしています。既知のパスワードuserPasswordtest属性を見ると、次のようになります。

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==に移動する手順を説明できますか?

6
Max

PHP md5()関数の2番目のパラメーターを確認しましたか?

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

php md5.php 
CY9rzUYh03PK3k6DJie09g==

生のバイナリ形式を使用する必要があります(そのため、base64でエンコードされています)。

4