PHP & MySQL Пароль Вопрос

0

Как я могу добавить соль к текущему хеш-паролю, когда пользователь регистрируется. И как я должен хранить свой пароль в моей базе данных MySQL?

Вот мой PHP-код.

if ($_POST['password1'] == $_POST['password2']) {
    $sha512 = hash('sha512', $_POST['password1']);
    $password = mysqli_real_escape_string($mysqli, $purifier->purify(strip_tags($sha512)));
} else {
    $password = NULL;
}
  • 0
    Можете ли вы уточнить, как "как хранить" часть? Вы имеете в виду, как вставить его в базу данных, или какая схема базы данных вам нужна?
  • 0
    Мне было интересно, есть ли какой-то особый способ, чтобы вставить его в базу данных MySQL?
Показать ещё 1 комментарий
Теги:

4 ответа

2
$salt = 'my-secret-salt-92h3nc29378ry293';

...

$sha512 = hash('sha512', $salt . $_POST['password1']);
$password = mysqli_real_escape_string($mysqli, $sha512);

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

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

0

Мне нравится хранить соль с хэшем пароля в базе данных и вычислять ее так:

$salt = "Su0";
$password = "mypassword0111";
$hash = md5(md5($password) . $salt);

Затем при входе в систему пользователя:

$sql = "SELECT * FROM user_table WHERE username = '...
//do db lookup
$hash = md5(md5($password_from_user_login) . $salt_from_db);
if($hash = $hash_from_db) {
  $userloggedin = true;
}

Или что-то вроде этого

0
if ($_POST['password1'] == $_POST['password2']) {
    $sha512 = hash('sha512', $_POST['password1']."salt"); //<--------------------
    $password = mysqli_real_escape_string($mysqli, $purifier->purify(strip_tags($sha512)));
} else {
    $password = NULL;
}
// vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
$user = $_POST['user'];
$db = mysql_connect('host', 'user', 'password');
mysql_select_db('database', $db);
mysql_query("UPDATES user_table SET pass=$password WHERE user=$user");
mysql_close($db);
  • 0
    @snag «Соль» означает только то, что было добавлено до или после пароля перед хэшированием, что дает ему другую хэшированную строку. В этом случае я использовал строку «соль» для моей соли. Вы можете использовать все, что захотите, но убедитесь, что это соль, которую вы можете использовать снова при сравнении пароля, иначе вы никогда не сможете войти! (установка постоянной соли обычно рекомендуется. Некоторые люди используют имя пользователя или другие параметры в качестве соли)
0

Вы можете использовать algortithms, например:

sha512($password.$salt) или sha512(sha512($password.$salt) Это зависит от вас, как генерируется соль, если она хранится вместе с хешем пароля в базе данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню