3

我正在升级我的身份验证类,替换md5crypt存储密码。这是我采取的方法:

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 回答