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