2016-11-25 12 views
0

大きな問題があります.PBKDF2(別のperlスクリプト)としてパスワードが保存されているdbを使用してPHPログインページを作成する必要があります。クエリでパスワードを取得すると、私はこれを読む: sha256:1000:2SeBDP88w4bqKbJaCJNpNuRHQhUM96X1:jgh/SZtmRWH5iDIwtXyFLtuuDf7YE + 7HQEJZ4KFFNAg =(私はこのパスワードを知っていますが、私はそれをphpで再生成できません)。PBKDF2で保存されたパスワードを確認してください。

私はこのスクリプトを試してみました(php.netから取得):

$password = "qqqqq"; 
$iterations = 1000; 
$salt = "2SeBDP88w4bqKbJaCJNpNuRHQhUM96X1"; 
$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20); 
echo $hash // result a2ba3349194c38f828af 

をしかし、パスが生成a2ba3349194c38f828afとJGHないです/ SZtmRWH5iDIwtXyFLtuuDf7YE + 7HQEJZ4KFFNAg =これらを保存するperlスクリプトを書いた

パスワードは私に "パスワードはPBKDF2という一方向ハッシュスキームでエンコードされています"

アイデアはありますか?誰かが私が間違っていることを知っている?

答えて

0
    jgh/SZtmRWH5iDIwtXyFLtuuDf7YE+7HQEJZ4KFFNAg=
  • は、Base64(Base64では末尾=ことなく存在するものの端に=は、死んだ景品である)です。
  • 16進数に変換された値は8E087F499B664561F9883230B57C852EDBAE0DFED813EEC7404259E0A1453408
  • です。これはまだあなたの答えではありませんが、今では64桁の16進数=> 32バイトです。
  • 20バイトを要求しました。
  • 塩分の入力がbase64であるように見えますが、それに渡す関数は... base64_decodeの出力に関係なくです。

したがって、base64でエンコードされたデータを一貫して処理する必要があります。そして、ハッシュアルゴリズム、繰り返し回数、出力バイト数がすべてperlスクリプトの記述と一致することを確認する必要があります。

0

この

$hash = strtoupper(bin2hex($hash)); 
を試してみてください
関連する問題