Мне нужно знать, как hash() o password_hash()
я делаю приложение, и я хочу зашифровать его, чтобы оно хранилось в базе данных, и когда я хочу сравнить эту строку, введенную в логин, она не выдает мне ошибку. Например
$pass="pepito";
$hashed_pass = password_hash($pass, PASSWORD_DEFAULT);
insert into tabla (password) values ($hashed_pass);
И когда я иду консультироваться, верните значение, но расшифруйте значение, которое было отправлено в зашифрованном виде
Например
$pass="pepito";
select password from tabla where password = $pass;
Очевидно, это выдаст мне ошибку, потому что прежде чем я должен передать пароль алгоритму хеширования, однако я провел несколько тестов, и каждый раз, когда я его получаю, он полностью меняет алгоритм, что не позволяет мне сравнивать пароль в базе данных и приводить мне ценности
Помогите, спасибо.
Я собираюсь оставить вам пример того, как сохранить пароль безопасным методом
password_hash()
, я бы не стал применять ниmd5
один, так как есть страницы, где мы можем легко расшифровать паролиmd5
, например.http://md5cracker.org/
Давайте посмотрим, как это работает.
password_hash()
Он создает новый хэш пароля, используя надежный алгоритм одностороннего хеширования. password_hash() совместим с crypt(). Поэтому хэши паролей, созданные с помощью crypt(), можно использовать с помощью password_hash().Теперь мы видим, как мы можем проверить введенный пароль с помощью
hash_equals
.hash_equals
— Безопасное сравнение строк против атак по времениНа самом деле не рекомендуется сохранять пароль, который можно так легко расшифровать. Если в конце концов пароль можно взломать обычным способом, какой смысл держать его в зашифрованном виде?
Что обычно делается, так это сохранение зашифрованного пароля (например, с помощью MD5 или SHA1), а затем при сравнении сравниваемая строка записывается и сравнивается с зашифрованным паролем, который хранится в базе данных. Вы можете сделать это шифрование на уровне PHP или MySQL, используя функции MD5 или SHA1. Я оставляю вам ссылку, где они говорят об этой теме в конце: http://blog.aulaformativa.com/consultorio-desarrollo-web/
Как и пароль, он шифрует
password_hash
его и возвращает строку вида:Существует функция сравнения, соответствует ли хэш паролю, введенному в виде обычного текста.
password_verify
возвращаетсяTRUE
илиFALSE
.Доброе утро.
Что я делаю для шифрования паролей при сохранении их в MD5, я использую:
$password = md5($_POST['password'])
и для вставки я делаю:insert into tabla values ($password);
Чтобы сделать запрос, я бы
С тем, что они сказали мне, я смог собрать этот код:
Пароли я ввел уже хешированные, они уже такие есть в базе, сделал такой код:
Теперь я хочу сравнить пароли, например,
2000000
. Я собрал код следующим образом:Но у меня не получилось, мне возвращается, что "это не то же самое", что я сделал не так?