Как дешифровать пароль, который я хэшировал с Bcrypt (для целей отображения)? - PullRequest
0 голосов
/ 16 мая 2019

Я создаю приложение, которое позволяет пользователям входить в систему с именем пользователя / паролем.У меня есть учетная запись администратора, которая создает этих пользователей, и я хэши пароли, поскольку я храню их в БД mySQL.Однако, если пользователь забывает свой пароль, я хочу, чтобы он мог видеть его в не-хешированном состоянии в этой учетной записи администратора и мог его изменить.Возможно ли это и как это сделать?

Используемые мной технологии: Laravel / Vue / mySQL / Bcrypt.

Ответы [ 2 ]

3 голосов
/ 16 мая 2019

bcrypt - алгоритм хеширования, а не шифрования. Это означает, что это не обратимо.

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

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

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

Подробнее здесь: https://laravel.com/docs/5.8/encryption

1 голос
/ 16 мая 2019

Вы не можете.

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

...