Каков самый быстрый, все же безопасный способ зашифровать пароли (в PHP предпочтительно), и для того, какой бы ни метод, который Вы выбираете, действительно ли это портативно?
Другими словами, если я позже перемещу свой веб-сайт на другой сервер, то мои пароли продолжат работать?
Метод, который я использую теперь, когда мне сказали, зависит от точных версий библиотек, установленных на сервере.
При выборе метода шифрования для системы входа в систему затем, скорость не является другом, у Jeff был to-frow с Thomas Ptacek о паролях и , заключение состояло в том, что необходимо использовать самое медленное, большая часть метода надежного шифрования, которому можно предоставить.
Из блога Thomas Ptacek:
Скорость точно, что Вы don’t хотят в функции хэша пароля.современные схемы пароля подвергаются нападению с возрастающими взломщиками пароля.
Возрастающие взломщики don’t предварительно вычисляют все возможные взломанные пароли. Они рассматривают каждый хэш пароля индивидуально, и они подают свой словарь через функцию хэша пароля тем же путем, Ваша страница входа в систему PHP была бы. Взломщики таблицы Rainbow как Ophcrack используют пространство для нападения на пароли; возрастающие взломщики как John Превосходный человек, Трещина и LC5 работают со временем: статистические данные и вычисляют.
игра нападения пароля выиграна вовремя взятая для взламывания пароля X. С таблицами радуги то время зависит от того, насколько большой Ваша таблица должна быть и как быстро можно искать ее. С возрастающими взломщиками время зависит от того, как быстро можно сделать функцию хэша пароля выполненной.
, Чем лучше можно оптимизировать функцию хэша пароля, тем быстрее функция хэша пароля добирается, более слабое, которое схема. MD5 и SHA1, даже стандартные блочные шифры как DES, разработаны, чтобы быть быстрыми. MD5, SHA1 и DES являются хешами слабого пароля. На современных центральных процессорах сырые данные crypto стандартные блоки как DES и MD5 могут быть bitsliced, векторизованным и параллелизированным для создания молнии поисков пароля быстро. Игра закончена реализации FPGA стоят только сотен долларов.
Я с Peter. Разработчик, кажется, не понимает паролей. Все мы выбираем (и я виновен в этом также), MD5 или SHA1, потому что они быстры. Размышление об этом ('cuz кто-то недавно указал на это мне), который не имеет никакого смысла. Мы должны выбирать алгоритм хеширования, это глупо медленный. Я имею в виду в масштабе вещей, оживленный сайт хеширует пароли что? каждая 1/2 минута? Кто заботится, требуется ли 0,8 секунды по сравнению с мудрым сервером 0,03 секунд? Но что дополнительное замедление огромно для предотвращения всех типов общих грубых-forcish нападений.
От моего чтения, bcrypt специально предназначен для хеширования безопасного пароля. Это основано на шифре, и существуют многие реализация.
Для PHP, PHPPass http://www.openwall.com/phpass/
выезда Для любого делающего.NET, BCrypt.NET выезда http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx
Нужно указать, что Вы не хотите к , шифруют пароль, Вы хотите к [1 112] хеш это.
Зашифрованные пароли могут быть дешифрованы, позволив кому-то видеть пароль. Хеширование является односторонней операцией, таким образом, старый пароль пользователя (криптографически) уводят.
<час>, Что касается которого алгоритма необходимо выбрать - используют в настоящее время принимаемый стандартный:
И когда Вы хешируете пароль пользователя, убедиться также хешировать в некотором другом спаме с ним. например:
password1
PasswordSaltDesignedForThisQuestion
Добавляют соль к паролю пользователя:
String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
Независимо от того, что Вы делаете, не пишите свой собственный алгоритм шифрования. Выполнение этого почти гарантирует (если Вы не будете шифровальщиком), что будет дефект в алгоритме, который сделает это тривиальным для взламывания.
Я не обязательно ищу самое быстрое, но хороший баланс, часть сервера, для которого разрабатывается этот код, является довольно медленной, сценарий, который хеширует и хранит пароль, занимает 5-6 секунд для выполнения, и я сузил его к хешированию (если я комментирую долго обсуждение, он работает через 1-2 секунды).
Это не должно быть самым безопасным, я не ввожу в заблуждение для банка (прямо сейчас), но я, конечно НЕ БУДУ хранить пароли как простой текст.
Используйте эту функцию при вставке в базу данных Password_harsh ($password, PASSWORD_DEFAULT); И при выборе из базы данных Вы сравниваете пароль, который Вы вставляете с тем в базу данных с помощью функции, если (password_verify ($password, $databasePassword)) {
}else{
echo "password not correct";
}
Это будет резкий пароль в безопасном формате