2016-11-25 10 views
0

У меня большая проблема, мне нужно написать страницу входа php, используя db, где пароль хранится как PBKDF2 (с другим скриптом perl). Когда я получаю пароль с запросом, я читаю следующее: sha256: 1000: 2SeBDP88w4bqKbJaCJNpNuRHQhUM96X1: jgh/SZtmRWH5iDIwtXyFLtuuDf7YE + 7HQEJZ4KFFNAg = (Я знаю этот пароль, но я не могу его восстановить в php).Проверьте пароль, хранящийся в PBKDF2, с php

Я попытался с помощью этого сценария (получить от 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 без завершающего =).
  • Преобразование в шестнадцатеричное значение 8E087F499B664561F9883230B57C852EDBAE0DFED813EEC7404259E0A1453408
  • Это еще не ваш ответ, но теперь мы можем легко увидеть, что это 64 шестнадцатеричных символа => 32 байта.
  • Вы запросили 20 байтов.
  • Он также выглядит как ваш вход со соли base64, но функция, которую вы передаете ей, ожидает ... независимо от результата base64_decode.

Итак, вам необходимо последовательно обрабатывать данные, закодированные base64. И тогда вам нужно убедиться, что ваш алгоритм хеширования, счетчик итераций и количество байтов вывода совпадают с тем, что говорит скрипт perl.

0

попробовать это

$hash = strtoupper(bin2hex($hash));