Создание соли с портативной фреймворком хэскрирования паролей PHP

StackOverflow https://stackoverflow.com/questions/4805890

Вопрос

Я хотел бы использовать Портативная структура хэскризирования пароля PHP Хэш -пароли. Но я считаю, что его демонстрации не используют соль для хэширования пароля. Но он использует фиктивную соль для проверки пароля, который я нахожу странным, и я вообще не понимаю эту идею,

$dummy_salt = '$2a$08$1234567890123456789012';

if (isset($dummy_salt) && strlen($hash) < 20)
        $hash = $dummy_salt;

Интересно, если я хочу использовать метод соглашения, который я могу сгенерировать уникальную соль и сохранить ее для каждого пользователя в моей базе данных, как я могу использовать портативную структуру хэскрирования паролей PHP для создания солей?

Это функция, которую я использую для хэш -паролей, но мне сказали, что у SHA512 есть та же проблема, что и SHA1, мудрый, чтобы доверять эксперту, такой как портативная структура хэширования паролей PHP,

function hash_sha512($phrase,&$salt = null)
{
    //$pepper = '!@#$%^&*()_+=-{}][;";/?<>.,';

    if ($salt == '')
    {
        $salt = substr(hash('sha512',uniqid(rand(), true).PEPPER_KEY.microtime()), 0, SALT_LENGTH);
    }
    else
    {
        $salt = substr($salt, 0, SALT_LENGTH);
    }

    return hash('sha512',$salt.PEPPER_KEY.$phrase);
}

Дайте мне знать, если у вас есть идея. Спасибо.

Это было полезно?

Решение

От Phpass статья Связано со этой страницы:

Помимо фактического хеширования, Phpass прозрачно генерирует случайные соли, когда хэшируется новый пароль или пароль, и он кодирует тип хэша, соль и итерацию по растяжению пароля в «хэш -кодирующую строку», которую он возвращает. Когда PHPASS аутентифицирует пароль или пасфразу против хранимой хэш, он также прозрачно извлекает и использует идентификатор типа хэша, соль и итерацию из «строки хэш -кодирования». Таким образом, вам не нужно беспокоиться о соле и растяжении самостоятельно - Phpass позаботится об этом для вас.

... Так что неудивительно, что примеры не используют солинг! Вы можете перепроизводить свой код.

Образец кода с фиктивной солью является примером того, как предотвратить атаку времени, следя за тем, существует ли пользователь или нет, проверка пользователя занимает столько же времени, эффективно, выполняя фиктивную аутентификацию для несуществующей пользователи. Ему нужна фиктивная соль, потому что, если пользователь не существует, у него не будет хранимой соли для использования.

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