2
我对这个东西很陌生,但这是我的登录授权页面。PHP登录系统 - 我做对了吗?
function encrypt($password, $salt) {
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($salt), $password, MCRYPT_MODE_CBC, md5(md5($salt))));
}
$query = "SELECT * FROM users WHERE LOWER(`username`) = :user";
$stmt = $dbh->prepare($query);
$stmt->bindValue(':user', strtolower($_POST['username']));
$stmt->execute();
if ($stmt->rowCount() == 1) {
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (encrypt($_POST['password'], $row['salt']) == $row['password']) {
echo "Logged in!";
}
}
在我的数据库,我有列username
,password
和salt
。密码列包含加密的密码。
我的工作流程在这里正确吗?
为什么base64_encode在哈希上? – Zaffy
@ Zaffy http://stackoverflow.com/questions/1289061/best-way-to-use-php-to-encrypt-and-decrypt – Norse
你不应该加密密码,但散列它们。加密是可逆的,哈希(至少在理论上)不是。 – NullUserException