Вопрос

Я был здесь вчера и получил несколько очень великих ответов. Я взял то, что я получил и собрал, то, что я думаю, будет довольно безопасным алгоритмом. У меня проблема с использованием Blowfish с циклом для цикла, которая генерирует соль.

Я использую Base64 символов и A для цикла, чтобы получить случайную строку. Я хочу взять эту сгенерированную строку и вставить ее в функцию Crypt в качестве соли.

Поскольку документация о Blowfish - это такая редкая, и документы PHP на самом деле даже не упоминают об этом, я своего рода темнота в темноте.

Действительно странная вещь, если вы запускаете этот код так, как сейчас, это будет нет потерпеть неудачу. Удалять либо '$ 2A $ 07 $' сверху для цикла или от функции крипта, и это будет периодически Верните зашифрованную строку. Мое понимание Blowfish - это то, что зашифрованная строка должен Начните с $ 2a $ 07 $ 'и заканчиваются в «$», следовательно, объединение в функции Crupt. Мне действительно не нужна начальная строка над циклом и просто хотела избавиться от этого.

Я также хотел бы разъяснить о лучшей практике при хранении случайной соли, либо в базе данных или Поддерживая вывод функции Crypt в базе данных?

Вчера не было никакого реального кода, который брошен, просто обсуждение. Я хотел бы поставить некоторый код вместе сегодня и иметь что-то довольно безопасно на месте. Если кто-то может придумать лучший алгоритм, я всегда открыт.

$base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
$salt = '$2a$07$';

for($i=0; $i<60; $i++)
{
    $salt .= $base64[rand(0,63)];
}

return crypt('password', '$2a$07$'.$salt.'$');
Это было полезно?

Решение

Кажется, что crypt() Невиды + Чем в соли и многие другие специальные символы (*, % так далее). Если вы отфильтровали их, он должен работать на каждой попытке (и нет необходимости повторять строку идентификатора соли).

Другие советы

Я знаю, что этот вопрос практически древняя история, но в интересах тех, кто находит его, поисши в поисках Google, есть довольно подробное описание того, как соли Bcrypt / Eksblowfish работают в ответ на этот вопрос:

Почему склеп / Blowfish генерируют то же самое хеш с двумя разными солями?

Краткий ответ, как сказал CAF, он использует алфавит Base64, состоящий из [a-zA-Z0-9./], с участием $ Как нулевой (не 0) увольнение / прокладки символа. Если вы используете какие-либо персонажи вне этого диапазона, или $ Слишком рано, это будет либо ошибся или не интерпретировать полную соль.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top