我有登录系统
例如,Joe
可以使用用户名登录joe
而没有任何问题。
目前,我正在使用使用用户名作为盐的密码加密。这会造成登录问题。例如,
SELECT * FROM `users` WHERE LOWER(`username`) = LOWER(`:username`)
$stmt->bindValue(':username', $_POST['user']);
这工作正常。问题涉及密码:
SELECT * FROM `users` WHERE LOWER(`username`) = LOWER(`:username`)
AND `password` = :password
$stmt->bindValue(':username', $_POST['user']);
$stmt->bindValue(':password', encrypt($_POST['password'], $_POST['user'])); //encrypt(password, salt)
如您所见,密码加密不会检查数据库,因为用户已登录joe
而不是Joe
有没有解决方法,或者我应该使用其他东西作为盐?如果是这样,我应该用什么作为盐?这是我的加密功能:
function encrypt($password, $salt) {
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($salt), $password, MCRYPT_MODE_CBC, md5(md5($salt))));
}