Я слышал, что единственная цель соли - предотвратить атаки радужной таблицы, но, конечно же, она должна иметь большую ценность, чем эта? Разве это не предотвратило бы и атаку по словарю? А как насчет брутфорса, там соль пригодится? И не могли бы вы объяснить почему?
Во-вторых, предположим, что у меня есть алгоритм, который берет микропериод, соль из 128 символов и случайное число от 1 до 10 миллиардов и хеширует их вместе. Обеспечит ли это высокий уровень безопасности? Ибо даже если бы злоумышленник знал одну из этих деталей, мне кажется, что вычислить остальные все равно было бы невозможно с вычислительной точки зрения. Но правда ли это?
Спасибо,
Бен
Изменить:. Чтобы уточнить, у злоумышленника нет доступа к алгоритму хеширования, поэтому он не может спамить какую-либо информацию в систему. Все, что у них есть, - это хэш, и они должны решить, как он был скомпилирован. Конечно, даже если бы они знали, как генерируется хеш, попытка перебора всех комбинаций с помощью длинной соли сделала бы это нереальным?
Кроме того, хеш - это не пароль или имя пользователя, это просто случайный набор символов, используемых для аутентификации. Таким образом, соль и случайное число не нужно сохранять, только полученный хеш. В этом случае будет ли вышеупомянутая система, представленная чем-то вроде приведенного ниже кода, хорошей системой для предотвращения возможности злоумышленника реалистично угадать, какой может быть хеш-код пользователя?
$salt = "some random characters I made up";
hash('sha256', microtime(true).$salt.mt_rand(1000,9999));
Я знаю, что это всего 1000-9999 вместо упомянутых выше миллиардов.
Еще раз спасибо.