Как получить хорошую соль - Достаточно ли безопасна моя функция? - PullRequest
36 голосов
/ 04 ноября 2010

Вот функция, которую я использую для генерации случайных солей:

function generateRandomString($nbLetters){
    $randString="";
    $charUniverse="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    for($i=0; $i<$nbLetters; $i++){
       $randInt=rand(0,61);
        $randChar=$charUniverse[$randInt];
        $randString=$randomString.$randChar;
    }
    return $randomString;
}

Это для некоммерческого сайта. Он используется только для генерации соли (хранится в БД и используется вместе с пользователем, переданным pw для хеширования).

Это уместно? Должен ли я использовать большее подмножество символов, и если так, есть ли простой способ сделать это в PHP?

Ответы [ 11 ]

0 голосов
/ 07 апреля 2014

Если вам нужна конечная уникальная соль, вы должны использовать уникальное значение, введенное и требуемое пользователем, такое как электронная почта или имя пользователя, затем хэшировать его с помощью sha1, а затем объединить - объединить - со значением соли, созданным вашим кодом.

Еще, вы должны расширить $charUniverse с помощью некоторых специальных символов, таких как @,!#- и т. Д.

...