Как получить ветхое значение php hash_pbkdf2 - PullRequest
0 голосов
/ 17 сентября 2018

Я зашифровал строку с помощью функции PHP hash_pbkdf2.Пожалуйста, просмотрите следующий код:

$password = "password";
$iterations = 10000;
$salt = 1111;

$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20);


The result of hash value "61ea90120ac05230465c"

Все отлично работает в шифровании.

Пожалуйста, дайте мне знать, как расшифровать значение "61ea90120ac05230465c" и получить результат "пароль"

1 Ответ

0 голосов
/ 24 октября 2018

Краткий ответ: Вы не можете.Могу ли я порекомендовать этот подход вместо ?


Более длинный ответ (отрывок из этой статьи , которая объясняет разработчикам термины криптографии):

Многие разработчики считают, что пароли должны быть зашифрованы , но это неверно. Пароли должны быть хешированы , не зашифрованы.Кроме того, не путайте алгоритмы хеширования паролей с простыми криптографическими хеш-функциями.Это не одно и то же:

Table comparing cryptographic hashes versus password hashes

В отличие от криптографических хэшей, хэши паролей требуют более одного входного параметра.Но в отличие от алгоритмов шифрования, хэши паролей являются односторонними детерминированными вычислениями ловушек.Кроме того, в отличие от шифрования с секретным ключом, соль не должна оставаться секретной;он просто должен быть уникальным для каждого пользователя.Назначение уникальной соли для каждого пользователя состоит в том, чтобы помешать предварительным вычислениям и сделать пароли из списка хеш-кодов более грубыми.

Функция hash_pbkdf2() является типом хэш-функции.поэтому вы не можете расшифровать его .

Более того, имя алгоритма, которое он использует, - PBKDF2, или P assword- B ased K EY D Erivation F Unction # 2 .Он был разработан для того, чтобы превратить пароль (низкоэнтропийный вводимый человеком и запоминаемый человеком ввод) в защищенный криптографический ключ.То, как это было сделано под колпаком, привело к тому, что многие люди использовали PBKDF2 в качестве хэша пароля.

Хотя между KDF и алгоритмами хэширования паролей есть некоторые ключевые различия, ради this ответ, они по сути тот же тип алгоритма .

Итак, ответ на вопрос "как [расшифровать] этот вывод PBKDF2?"is: Вы не можете.

Хеш-функции являются односторонними.Существуют бесконечные входные данные, которые могут генерировать любой заданный хэш-вывод, но поскольку пространство ключей вывода настолько обширно с безопасными хеш-функциями, вычислительно невозможно создать конфликт.

Это также верно для хеш-функций пароля (и ключафункции деривации), кроме усугубленных:

  1. Соль
  2. Итерированное хеширование
  3. (В некоторых случаях) алгоритмы с жесткой памятью, которые затрудняют выполнение атака перебором с использованием параллельной обработки.

Решение состоит в том, чтобы использовать правильный инструмент для задания .И если вы не знаете, что это такое, начните здесь , чтобы вы поняли условия, тогда посмотрите этот ответ, например, код .

...