Является ли посол с хешированной версией пароля пользователя таким же безопасным, как засолка с заранее определенной строкой? - PullRequest
1 голос
/ 20 декабря 2010

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

Это:

$pass = "pass";
$salt = sha1(md5($pass));
$pass = md5($pass.$salt);

Столь же безопасно, как это?

$pass = "pass";
$salt = "4D9ds*^dkrUI45^#dkd*3fD8&!dlvd*";
$pass = md5($pass.$salt);

Ответы [ 3 ]

4 голосов
/ 20 декабря 2010

Если соль основана на хешируемом значении, вы теряете значение соли.

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

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

3 голосов
/ 20 декабря 2010

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

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

2 голосов
/ 20 декабря 2010

Вы не должны использовать md5 в любом случае, так как он был взломан.sha256 более безопасен и прост в реализации.Как насчет использования при хранении данных:

$salt = mt_rand();
$pass = hash('sha256',$_POST['userPassword'] . $salt);

Поэтому $ salt основывается не на введенных пользователем данных, а на случайных данных.Затем вы сохраняете $ salt в БД как есть или переворачиваете строку для запутывания.

...