我是在数据库上存储密码的新手,根据我读到的内容,我在下面创建了一个简单的 php 脚本
<?php
$salt = openssl_random_pseudo_bytes (16);
$password = "test";
$hash = hash ("sha512" , $salt . $password);
echo $hash;
?>
- 我这样做正确吗?
- 盐应该作为字节数据类型存储在数据库中吗?
- 最终的哈希值应该存储在数据库中的字符串数据类型中吗?
如果你正在跑步(PHP 5 >= 5.5.0)
那么你可以利用内置的 php 密码哈希功能。
- http://php.net/manual/en/function.password-hash.php http://php.net/manual/en/function.password-hash.php
-
http://php.net/manual/en/function.password-verify.php http://php.net/manual/en/function.password-verify.php
简单用法:
$options = [
'cost' => 11,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM), // or your own salt here
];
$pass_hash = password_hash("helloworld", PASSWORD_BCRYPT, $options);
if (password_verify('helloworld', $pass_hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)