Мы принимаем к оплате:

«Подарочный сертификат» от нашего Учебного Центра – это лучший подарок для тех, кто Вам дорог! Оплате обучение и подарите Вашим родным и близким обучение по любому из курсов!!!

«Сертификат на повторное обучение» дает возможность повторно пройти обучение в нашем Учебном Центре со скидкой 1000 рублей!

А также:


Как шифровать пароли php


Как шифровать и расшифровывать пароли в PHP?

Я не уверен, что вы пытаетесь выполнить, но в целом: Пожалуйста, разрабатывайте приложения таким образом, чтобы пользовательские пароли не извлекались в виде открытого текста каким-либо образом (например, никакой функции декодирования).

Поскольку многие пользователи используют один и тот же пароль для нескольких служб, я считаю это плохой практикой, если технически можно просмотреть пароль пользователя: если вы обслуживаете (или вашу хостинговую компанию), то каким-то образом не удается защитить, скажем, базу данных с паролями + mailadresses, эти пользователи находятся в открытом доступе: эти учетные данные потенциально открывают двери для многих злоупотреблений на разных приложениях/веб-сайтах. Короче говоря, я бы не хотел даже отвечать за это.

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

valid_key = sha1(password + salt); // store in database when user chooses / changes password

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

user_key = sha1(password_attempt + salt)

Затем вы просто сравниваете user_key с valid_key:

if(user_key == valid_key) // authentication succesfull else // wrong password

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

Дополнительным преимуществом хэширования является то, что хеши (которые вы храните в своем приложении, например, в базе данных) всегда имеют одинаковую длину (sha1 всегда является шестнадцатеричным значением 160 бит).

Таким образом, вы можете дать параноидальным пользователям возможность сделать пароль безумных длин, если они захотят, со всеми родственниками странных символов в нем (например, обратными окнами или пробелами), в то время как это не требует вам дополнительного пространства для хранения.

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

[EDIT] В настоящее время есть намного лучшие альтернативы, такие как PBKDF2, Bcrypt (см. Этот вопрос) или даже Scrypt. Пожалуйста, рассмотрите одну из этих схем, поскольку они намного более безопасны, особенно для относительно коротких паролей.

как шифровать/расшифровывать пароль с помощью соли, используя libsodium php

Похоже, вы пытаетесь смешивать многие несвязанные вещи. CRYPTO_SIGN_SEEDBYTES для подписей, которые не имеют никакого отношения к хэшированию паролей, crypto_pwhash не использует алгоритм шифрования, поэтому константы CRYPTO_PWHASH_SCRYPTSALSA208SHA256_* не применяются, и я не уверен, что здесь делает md5(). И вы, вероятно, хотите хешировать пароль, а не шифровать его.

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

$password = 'correct horse battery staple'; $h = \Sodium\crypto_pwhash_str($password, \Sodium\CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE, \Sodium\CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE);

$h - это все, что вам нужно сохранить в базе данных.

Затем, чтобы убедиться, что то, что у вас есть в базе данных, действительно для данного пароля:

if (\Sodium\crypto_pwhash_str_verify($h, $password) === FALSE) { // wrong password! }

Mcrypt устарел? - Как правильно шифровать и сохранять пароль в PHP?

Мне сказали, что php mcrypt устарел, и я должен использовать другой метод для хэша и солить мои пароли.

Это то, что я делаю сейчас:

public function saveNewUser(array $data) { $passwd = $this->mysqli->real_escape_string($datas['passwd']); $options = [ 'cost' => 11, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM) ]; $hashed_passwd = password_hash($passwd, PASSWORD_BCRYPT, $options); $this->optin_hash = md5(rand()); //... //save user in DB with hashed passwd

Логин:

if (password_verify($_POST['user_password'], $result_row->gmw_usr_passwd)) {//do some login stuff}

1.) Каков последний и самый безопасный способ шифрования и сохранения пароля? Можете ли вы привести пример использования или ссылку, как правильно сохранить пароль для шифрования и , как проверить его для входа в систему?

2.) В php Documentary я прочитал что-то о password_hash:

password_hash() создает новый хэш пароля с использованием сильного одностороннего алгоритма хэширования. password_hash() совместим с crypt(). Следовательно, хэши паролей, созданные crypt(), могут использоваться с password_hash().

(...)

Внимание Опция salt устарела с PHP 7.0.0. В настоящее время предпочтительнее просто использовать соль, которая генерируется по умолчанию.

2.a) Является ли password_hash альтернативой тому, что я использовал?

2.b) Так что мне не нужно добавлять соль самостоятельно?

2.c) Как насчет этого алгоритма, который я использовал, и всех других шагов, которые я добавил? Они больше не нужны?

2.d) как проверить пароли для входа в систему, когда я использую password_hash?

EDIT: Извините, я видел, что я уже использую password_hash (это была очень короткая кодировка-ночь).

Как описано Artjom B. Мне не нужен mcrypt (?)

Шифрование/Расшифровка паролей к базе данных MySQL и из нее

Я замечаю, что люди делают огромные сделки по хранению паролей.

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

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

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


Смотрите также



Компьютерные курсы по направлениям:

Для начинающих


A

Компьютер для начинающих: Word, Excel, Access и другие программы!

Графические пакеты


B

Популярные пакеты Adobe Photoshop, CorelDraw, ArchiCAD, AutoCAD и другие!

WEB + анимация


C

Курсы по созданию сайтов, WEB-дизайну и крутой анимации в Adobe Flash!

Бухгалтерия + делопроизводство

Сетевые технологии


E

Курсы сборки ПК, системных администраторов и защиты информации!