Фон:
Я хочу добавить логин на свой небольшой сайт, который представляет собой онлайн-приложение php, которое я хотел бы создать, чтобы иметь возможность выдерживать большую активность пользователей в будущем.
Прежде чем я углублюсь в реализацию LightOpenID, я хочу добавить обычный логин. Книга, по которой я учился, называется Head First PHP & MySQL (2008 ), и окончательный код главы использует SHA('$user_password')
как часть запроса mysql.
Поскольку я интересуюсь письмом Джеффа Этвуда, я хорошо знаю bcrypt как scrypt. Но, поскольку нет реализации scrypt на php и нет выделенного сервера для его запуска, я решил хотя бы пока изучить реализацию bcrypt.
Однако я не совсем наивен,Я знаю, что должен следить за тем, чтобы не перенапрягать мои очень скромные ресурсы хостинга. Само приложение php всегда должно стоять на первом месте перед чем-либо еще, касающимся ресурсов.
Метод Эндрю Мура кажется хорошим (, хотя мне нужно посмотреть, как реализовать его на php 5.2.17, который использует мой хост ), и он поставляется с подсказкой для аппаратной скорости :
You should select a number of rounds that results in 200-250 ms of work. Part of the reason why bcrypt is secure is that it is slow. You must ensure to have a number of rounds that keeps that characteristic. – Andrew Moore
. Другой пользователь утверждает, что для него выполнение microtime()
дает 0,314 для Bcrypt (9 ), что, таким образом, было бы почти оптимальным.
Вопрос:
Судя по тому, что в моем распоряжении есть очень скромные ресурсы, и я хотел бы извлечь из них максимум пользы, оставив большую часть для самого приложения php, мне все же лучше использовать Bcrypt (4 )вместо что-то другое?
Bcrypt (4 )возвращает true почти мгновенно, но сохраняет ли он все еще ту характеристику, о которой говорит Мур? (Может ли это быть связано с оперативной памятью, которая усложняет брутфорс на GPU? )Или SHA512 или что-то другое на самом деле будет таким же быстрым, но более безопасным на данный момент?
Я ожидаю, что Bcrypt (4 )выиграет в этой ситуации, но, черт возьми, я знаю, верно? :с