【发布时间】:2016-02-22 19:48:15
【问题描述】:
我已经阅读了几篇文章并尝试了不同的技术在 MySQL 中存储密码。我决定使用crypt 和salt,我终于能够将它插入我的数据库。使用的代码如下:
$cost = 10;
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
$salt = sprintf("$2a$%02d$", $cost) . $salt;
$hash = crypt($password, $salt);
$query = "INSERT INTO users_registered(name , password) VALUES('$name', '$hash')";
mysqli_query($con, $query);
我一直在苦苦挣扎几个小时的主要问题是如何检查我输入的密码是否正确......我确定我做错了什么,但我在这个安全领域是全新的,并且我检查的所有帖子都不适合我。这是我用来检查的代码:
$name = mysqli_real_escape_string( $con, $_POST['name'] );
$password = mysqli_real_escape_string( $con,$_POST["password"]);
$query = "SELECT * FROM users_registered where name='$name'";
$result = mysqli_query($con, $query);
$row = mysqli_fetch_assoc($result);
$hash=$row['password'];
if ($hash->hash==crypt($password, $hash->hash)) {
echo "YEEEESSS";
}
else {
echo "What I'm doing wrooooong!";}
问题来自if,但我不确定我应该放什么:S
任何帮助将不胜感激:)
【问题讨论】:
-
password_hash()如果你运行 PHP 5.5+ 会更好:php.net/manual/en/function.password-hash.php -
对于 php
-
感谢您的快速回复!我正在使用 phppassword_hash() 时给了我未定义函数的错误... @VolkerK 我会马上检查!
-
@Alvaro 查找 github.com/ircmaxell/password_compat 如果您有 PHP 5.3.7 。否则请阅读stackoverflow.com/questions/19103340/…
-
另请参阅以下 php 版本 5.3:openwall.com/phpass
标签: php mysqli hash salt crypt