首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >password_hash、Password_default导致问题

password_hash、Password_default导致问题
EN

Stack Overflow用户
提问于 2018-02-21 23:16:58
回答 1查看 44关注 0票数 1

我有2个注册页面与不同的代码,但我希望他们返回相同的密码散列!或者至少Password_verify首先接受的格式是:

代码语言:javascript
复制
function _password_hash($password) {
    return password_hash($password, PASSWORD_DEFAULT);
}

  $db->query(sprintf("INSERT INTO users (user_name, user_email, user_phone, user_password, user_firstname, user_lastname, user_gender, user_birthdate, user_registered, user_activation_key) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", secure($args['username']), secure($args['email']), secure($args['phone']), secure(_password_hash($args['password'])), secure(ucwords($args['first_name'])), secure(ucwords($args['last_name'])), secure($args['gender']), secure($args['birth_date']), secure($date), secure($activation_key) )) or _error(SQL_ERROR_THROWEN);

第二个是:

代码语言:javascript
复制
$user_firstname = $mysqli->escape_string($_POST['firstname']);
$user_lastname = $mysqli->escape_string($_POST['lastname']);
$user_name = $mysqli->escape_string($_POST['user_name']);
$user_email = $mysqli->escape_string($_POST['user_email']);
$user_password = $mysqli->escape_string(password_hash($_POST['user_password'], PASSWORD_DEFAULT));
$hash = $mysqli->escape_string(md5(time()*rand(1, 9999)));

$sql = "INSERT INTO users (user_firstname, user_lastname, user_name, user_email, user_password, hash) "
        . "VALUES ('$user_firstname','$user_lastname','$user_name','$user_email','$user_password', '$hash')";

密码输出不同

EN

回答 1

Stack Overflow用户

发布于 2018-02-22 16:25:51

由于加盐,函数password_hash()永远不会返回相同的密码散列,但它始终会生成password_verify()接受的格式。如果不是这样,请检查散列是否存储为varchar(255),以及两个页面是否使用相同的PHP版本。

如果使用password_hash()既不转义用户密码,也不应该转义密码散列(它已经是安全形式)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48909387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档