Я хочу разработать веб-приложение, в котором пользователи могут входить в систему, вставляя свой адрес электронной почты и пароль (выбирается при регистрации). Я хочу знать, какой будет лучший алгоритм хэширования паролей. Я прочитал, что bcrypt - хороший вариант, но какой алгоритм использует такие сайты, как facebook?Алгоритм шифрования пароля
ответ
Вы хотите сохранить хэш и соль в своей базе данных и использовать их для аутентификации. Эта статья, в частности, была очень полезной для меня, когда я это сделал: http://www.codeproject.com/Articles/704865/Salted-Password-Hashing-Doing-it-Right
Вы никогда не должны хранить пароль, даже если он зашифрован. Потому что что-то зашифрованное может быть дешифровано, поэтому злоумышленник может сделать то же самое. Google для «хэширования» и «соления», возможно, у OWASP есть рекомендации, как это сделать должным образом. Я считаю, что хранение зашифрованных паролей будет в списке уязвимостей.
@ Adelphia Хотя я чувствую себя немного шантажированным, я может ответить вам на этот вопрос: вы не храните пароль в «четком тексте», вы просто храните его хэш, который вычисляется с помощью умного алгоритма, который не является обратимым. Короче говоря: если вы сохраняете пароль в файле, злоумышленник может захватить этот файл, а затем он знает ваш пароль. Если вы храните хэш (это всего лишь количество шестнадцатеричных значений, таких как «2a73f5b8b625a600c180ea44fe04e8c2dec52311», он мало выиграл. Когда пользователь вводит пароль в вашем приложении, вы просто вычисляете хеш и сравниваете его с сохраненным значением. – Marged
@ Adelphia I 'm still waiting ;-) – Marged
I misubderstood :) –
Я написал 2 функции для обработки паролей. Первый принимает строку (т. Е. Ваш пароль) и возвращает хеш-залив. Он принимает хеш MD5 времени и добавляет его в строку. Затем он принимает хэш SHA256 этой строки. Затем он добавляет исходный хеш MD5 в хэш SHA256. Функция возвращает эту 96-символьную строку. Вторая функция принимает 2 строки в качестве этих аргументов (проверяется пароль и хеш пароля, с которым вы его протестировали) и возвращает логическое значение. Это PHP, но логика, конечно, переносима.
function hash_password($password){
$md5 = strtoupper(hash('md5', time()));
$hash = $md5 . strtoupper(hash('sha256', $md5 . $password));
return $hash;
}
function test_password($password, $hash){
$md5 = substr($hash, 0, 32);
$sha256 = substr($hash, 32);
if($sha256 == strtoupper(hash('sha256', $md5 . $password)))
return true;
else
return false;
}
Это решаемая проблема. Вы не должны писать свои собственные! –
PHP имеет встроенную функциональность: [password_hash] (http://php.net/manual/en/function.password-hash.php). –
SHA- * ** не подходит для хэш-паролей, потому что это слишком быстро и поэтому может быть слишком грубым. Вместо этого мы используем медленную хеш-функцию с коэффициентом затрат, таким как BCrypt или PBKDF2. Password_hash() был написан точно, чтобы избежать такого кода с MD5 и SHA- *. – martinstoeckli
- 1. Лучший алгоритм шифрования пароля
- 2. Алгоритм шифрования
- 3. Идентификация шифрования пароля
- 4. Метод шифрования пароля
- 5. C - Алгоритм шифрования
- 6. PHP алгоритм шифрования
- 7. Алгоритм шифрования C++
- 8. Пользовательский простой алгоритм шифрования
- 9. Обратный алгоритм шифрования
- 10. алгоритм шифрования Delphi
- 11. Алгоритм шифрования/кодирования
- 12. непатентованный алгоритм одностороннего шифрования
- 13. Padding - алгоритм шифрования
- 14. Самоопределяющий алгоритм шифрования хэша
- 15. Программный алгоритм шифрования SSL
- 16. Идентифицировать алгоритм шифрования GSM
- 17. Простой алгоритм шифрования
- 18. алгоритм шифрования для приложения
- 19. Многосимвольный алгоритм шифрования замещения
- 20. самый надежный алгоритм шифрования
- 21. javascript caesar алгоритм шифрования
- 22. Алгоритм блочного шифрования
- 23. цезарь алгоритм шифрования с ++
- 24. Обратный простой алгоритм шифрования
- 25. PHP шифрования пароля, ключ включает
- 26. Поиск свойств шифрования пароля сервера
- 27. Какова логика шифрования Джанго пароля
- 28. Spring Монго шифрования шаблон пароля
- 29. Лучшая методология для шифрования пароля
- 30. Алгоритм шифрования для приложения iOS по HTTPS
По кодированию, что вы пробовали? – dnuka
Первый шаг, узнать разницу между шифрованием и хешированием. Ответ: scrypt или bcrypt. – SLaks
Это приложение JavaEE. Это алгоритм SHA256, который я использую http://www.mkyong.com/java/java-sha-hashing-example/, но я хочу знать лучшие варианты. – jose