我正在升级我的auth类,用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);
}
为每个用户创建唯一的salt会为所提供的用户名id
添加一个步骤,数据库查找...我认为这是值得的。我错了吗?还有什么我不在考虑的吗?
答案 0 :(得分:0)
salting的重点是从同一密码生成不同的加密字符串。如果你每次使用相同的盐,这不会发生,所以你也可以根本不使用盐。您应该为每个密码创建一个随机的新盐,然后将其与加密和盐渍字符串一起存储在数据库中。