我正在使用此php脚本将用户名和密码存储到我的MYSQL数据库中:
$nombre = $_POST['username'];
$password = $_POST['password'];
$stringpass = md5( $password . 'AAA');
$size = mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB);
$salt = mcrypt_create_iv($size, MCRYPT_RAND );
mysqli->query("INSERT INTO users(username,salt,password) VALUES ('$nombre','$salt',SHA2(CONCAT('$salt','$stringpass'), 512))"))
该记录已在MYSQL中正确创建。但是,当我尝试登录时,此脚本无法识别我的密码:
$nombre = $_POST['username'];
$password = $_POST['password'];
$stringpass = md5( $password . 'AAA');
$resultado = $mysqli->query("select * from users where username='$nombre' and password = SHA2(CONCAT(salt,'$stringpass'), 512)")
这对我没有任何结果。关于缺少什么的任何想法?也许是对盐田的参考,但不确定如何做到这一点。
请让我清楚一点,这段代码不适用于任何生产环境。它用于学校项目,仅用于演示设计简单用户身份验证脚本的目的。这就是说,我真的很想知道这段代码有什么问题,或者需要在PHP / MySQL环境中检查哪些特定配置。
最佳答案
我不确定确切的问题是什么,但这可能会有所帮助。
Php提供了一种更简单的替代方法,即自动生成盐和哈希值-password_hash()
函数。您只需执行password_hash($password, PASSWORD_BCRYPT);
,它将生成一个盐,使用它对密码进行哈希处理,然后将盐附加到哈希表的前面。
这是文档页面。
http://php.net/manual/en/function.password-hash.php