Я был здесь вчера и получил действительно отличные ответы. Я взял то, что получил и собрал вместе, что, я думаю, будет довольно безопасным алгоритмом. У меня проблема с использованием blowfish с циклом for, который генерирует соль.PHP склеп и соль - уточнение пожалуйста
Я использую символы base64 и цикл for для получения случайной строки. Я хочу взять эту сгенерированную строку и вставить ее в функцию склепа в качестве соли.
Поскольку документация о blowfish настолько разрежена, и документы PHP на самом деле даже не упоминают об этом, я как бы колоду в темноте здесь.
Действительно странно, если вы запустите этот код так, как сейчас, то он будет не сбой. Удалите либо «$ 2a $ 07 $» из цикла for , либо из функции crypt, и он будет с перерывами вернуть зашифрованную строку. Мое понимание blowfish состоит в том, что зашифрованная строка должна начинаться с '$ 2a $ 07 $' и заканчиваться на «$», следовательно, конкатенация в функции crypt. Мне действительно не нужна начальная строка выше цикла for и просто требуется чтобы избавиться от него.
Я также хотел бы получить разъяснения относительно лучшей практики по хранению случайной соли, либо в базе данных или путем сохранения вывода функции крипт в базе данных?
Вчера, не было никакого реального кода, который был бы брошен вокруг, просто обсуждение. Я хотел бы сегодня добавить некоторый код и иметь что-то, что достаточно безопасно. Если кто-нибудь может придумать лучший алгоритм, я всегда буду п.
$base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/';
$salt = '$2a$07$';
for($i=0; $i<60; $i++)
{
$salt .= $base64[rand(0,63)];
}
return crypt('password', '$2a$07$'.$salt.'$');
Вы добавили '$ 2a $ 07 $' дважды к значению соли, это намеренно? – meagar
Да. Вот почему я публикую. Если вы удалите одну из этих строк, функция склепа будет случайным образом возвращать зашифрованную строку. Я хотел бы удалить строку из цикла for и сохранить строку в функции crypt. Когда я удаляю его, функция крипты выходит из строя. – timmay
Если вы запустите этот код так, как он есть, он не подведет. Удалите одну из этих строк $ 2a $ 07 $, и она не удалась. – timmay