Могу ли я md5 (sha1 (пароль))? - PullRequest
0 голосов
/ 04 февраля 2012

Я в настоящее время кодирую свою собственную CMS и нахожусь в состоянии пароля ...

Я хочу знать, могу ли я md5 пароль, тогда sha1 после?

Как:

$password = md5(sha1(mysql_real_escape_string($_POST['passw'])));

Ответы [ 5 ]

6 голосов
/ 04 февраля 2012

Вы можете md5 любые данные, которые хотите, даже если они были хешированы ранее.

Это, однако, только увеличит риск столкновений, потому что вы сейчас работаете с меньшим набором данных.

Чего вы пытаетесь достичь?

4 голосов
/ 04 февраля 2012

Да, вы можете. Нет, это не имеет смысла.

Безопасность связанных хеш-функций всегда равна или меньше безопасности самого слабого алгоритма.

т.е. md5 (sha1 ($ что-то)) не более безопасен, чем sha1 ($ что-то): если вам удастся сломать sha1, вы получите md5 бесплатно, так как shat ($thing) и sha1 ($ faked_something) имеют одинаковые значение, и, следовательно, md5ing их ничего не изменит.

2 голосов
/ 05 февраля 2012

Убедитесь, что вы добавили туда соль, это значительно затруднит использование радужных таблиц для паролей ваших клиентов / пользователей.

Что-то вроде:

$ hashedPassword = sha1 (md5($ password). $ salt. sha1 ($ salt. $ password));

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

1 голос
/ 04 февраля 2012

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

Что такое соль и как ее использовать? имеет большеинформация об этом.

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

1 голос
/ 04 февраля 2012

Вы, очевидно, можете.Я не понимаю, почему вы не смогли.

Если вы хотите повысить безопасность, вам следует рассмотреть что-то вроде phpass .

...