Как получить устаревшее значение 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" и получить результат "пароль"

hashing! = шифрование
Jeff 17.09.2018 13:21

хеш-функция не может расшифровать. это односторонняя функция. если вам нужно зашифровать и расшифровать, тогда используйте A3 (шифр шифрования), но это плохой способ для пароля

Bilal Ahmed 17.09.2018 13:21

если вы думаете, что этот хеш можно легко «расшифровать» - зачем вам тогда его использовать?

Jeff 17.09.2018 13:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
3
1 039
1

Ответы 1

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


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

Many developers think passwords should be encrypted, but this is false. Passwords should be hashed, not encrypted. Furthermore, don't confuse password hashing algorithms with simple cryptographic hash functions. They're not the same thing:

Table comparing cryptographic hashes versus password hashes

Unlike cryptographic hashes, password hashes require more than one input parameter. But unlike encryption algorithms, password hashes are one-way deterministic trap door calculations. Also unlike secret-key encryption, the salt does not need to remain secret; it merely needs to be unique per user. The purpose of a unique salt per user is to thwart pre-computation and to make brute-force guessing passwords from a list of hashes more expensive.

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

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

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

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

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

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

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

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

Другие вопросы по теме