Итак, я узнал о том, что вы должны записать пароль вместе с "солью". (Статьи можно найти здесь и здесь.)
Здесь код:
$password = 'fish';
/* should be "unique" for every user? */
$salt= 'ABC09';
$site_key = 'static_site_key';
hash_hmac('sha1', $password . $salt, $site_key);
И теперь мне нужно сохранить как $password
, так и $salt
в MySQL, например:
+---------+--------+----------+-------+
| user_id | name | password | salt |
+---------+--------+----------+-------+
| 1 | krysis | fish** | ABC09 |
+---------+--------+----------+-------+
** fish
, конечно, будет хэшироваться и не храниться в виде обычного текста.
И мне просто интересно, действительно ли это имеет смысл делать это так, потому что таким образом хакер или кто-нибудь знает соль? Итак, если они взломают пароль и видят его fishABC09
, они автоматически узнают пароль fish
? Или он "никогда" не сможет взломать пароль, потому что он не знает secret_key
, поскольку он не хранится в базе данных?
Извините, если я не имею никакого смысла. Я всегда использовал sha1
для паролей, и сегодня я нашел эти статьи, которые говорили о добавлении salt
.