безопасность — Как получить ветхое значение php hash_pbkdf2

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

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

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


The result of hash value "61ea90120ac05230465c"

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

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

3

Решение

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


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

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

Таблица сравнения криптографических хэшей и хэшей паролей

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

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

Кроме того, имя используемого алгоритма — PBKDF2, или пassword-ВAsed Кеу Derivation FUnction #2. Он был разработан для того, чтобы превратить пароль (низкоэнтропийный вводимый человеком и запоминаемый ввод) в защищенный криптографический ключ. То, как это происходит под капотом, заставило многих людей использовать PBKDF2 в качестве хэша пароля.

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

Таким образом, ответ на вопрос «как [расшифровать] этот вывод PBKDF2?» является: Ты не можешь

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

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]