Как зашифровать пароли пользователей для входа на сайт - PullRequest
1 голос
/ 23 декабря 2011

Я разрабатываю веб-сайт для компании, и им требуется подтверждение входа в систему для использования некоторых услуг, предоставляемых этой компанией.Используя здравый смысл, я знаю, что мне нужно зашифровать пароль пользователя при сохранении его в базе данных.Не проблема, я могу просто реализовать алгоритм хеширования и сохранить хэш (или что-то еще, мне все еще нужно троллить StackOverflow, чтобы выяснить лучший способ сохранить эту информацию, но я не об этом спрашиваю).1002 * Что меня интересует, так это как на самом деле выполнить алгоритм шифрования.Это отдельная программа на сервере, которая зашифрует пароль и сохранит его?Или мне придется использовать модуль PHP для шифрования пароля?Или это что-то еще, о чем я не думаю?

Любые и все ответы приветствуются, и если я что-то сформулирую плохо, я рассчитываю на то, что вы меня об этом позовете;)

Ответы [ 2 ]

5 голосов
/ 23 декабря 2011

Встроенные в PHP методы хеширования работают хорошо.Не нужно звонить в гостиницы сторонних библиотек.Вы должны взглянуть на функцию hash () .Не забудьте использовать сильную соль при сохранении хеша.В интернете должно быть много хороших статей на эту тему, а также здесь .

Как указано в комментарии drrcknlsn, md5 и sha1 будут плохим выбором, поскольку они считаются неработающими.

Кроме того, как указывает Грексис в своем ответе, PBKDF2 - это еще один метод, на который вы могли бы обратить внимание.

1 голос
/ 23 декабря 2011

Я понимаю, что на этот вопрос уже был дан ответ, но я использую функцию хеширования. Это реализация PHP PBKDF2 (описанная в RFC 2898):

public static function hash($p, $s, $c = 5000, $kl = null, $a = 'sha256'){
    $hl = strlen(hash($a, null, true));
    if(is_null($kl)) $kl = $hl;
    $kb = ceil($kl/$hl);
    $dk = '';
    for($block = 1; $block <= $kb; $block++){
        $ib = $b = hash_hmac($a, $s.pack('N', $block), $p, true);
        for($i = 0; $i < $c; $i++)
            $ib ^= ($b = hash_hmac($a, $b, $p, true));
        $dk .= $ib;
    }
    return substr($dk, 0, $kl);
}

Более подробная информация здесь: Шифрование паролей с помощью PHP (Функция, приведенная выше, лишь незначительно изменена в этом месте для предоставления значений по умолчанию)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...