3

パスワードを保存するために、認証クラスをアップグレードmd5しています。cryptこれが私が取ったアプローチです:

function crypt_pass($pass, $userID) {
    $salt = $userID .'usesomesillystringforsalt';  // min 22 alphanumerics, dynamic
    $method = (version_compare('5.3.7',PHP_VERSION,'>=')) ? '2y' : '2a'; // PHP 5.3.7 fixed stuff
    if (CRYPT_BLOWFISH == 1) {
        $blowfish_salt = '$'. $method .'$07$'. substr($salt, 0, CRYPT_SALT_LENGTH) .'$';
        return crypt($pass, $blowfish_salt);
    }
    return sha1($pass . $salt);        
}

ユーザーごとにソルトを一意にすると、提供されたユーザー名のデータベースルックアップというステップが追加されますid...それだけの価値があると思います。私はそれについて間違っていますか?ここで考慮していないことは他にありますか?

4

1 に答える 1

0

ソルトの全体的なポイントは、同じパスワードから異なる暗号化された文字列を生成することです。毎回同じ塩を使用する場合、これは起こらないので、塩をまったく使用しない方がよいでしょう。パスワードごとにランダムな新しいソルトを作成し、暗号化してソルトした文字列と一緒にデータベースに保存する必要があります。

于 2012-08-05T10:50:02.390 に答える