我浏览了许多与此主题相关的文章,例如:
使用PHP 5.5的password_hash和password_verify函数
但是,我不确定是否要按照正确的方式进行哈希处理和加盐处理或过度使用!
我想使用自己的盐,然后再进行哈希处理。盐密码和哈希密码都存储在数据库中的两个不同字段中。
这是我在存储到数据库之前对密码进行哈希处理的方式
$cost = 10;
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
$salt = sprintf("$2a$%02d$", $cost) . $salt;
//shall I remove this line and replace below PASSWORD_DEFAULT with PASSWORD_BCRYPT instead?
$password = crypt($data['password'], $salt);
$hash = password_hash($password, PASSWORD_DEFAULT);
Run Code Online (Sandbox Code Playgroud)
鉴于此,我试图按以下方式验证密码:某种程度上,我觉得我在使过程复杂化。
$salt=$row['salt'];//taken from db
$hashAndSalt=$row['hashpword'];//taken from db
$password="pwtester";//user keyed in password
$newpassword = crypt($password, $salt);
$newhash = password_hash($newpassword, PASSWORD_DEFAULT);
if (password_verify($password, $newhash)) {
echo"verified";
}
else
{
echo"Not verified";
}
Run Code Online (Sandbox Code Playgroud)
编辑:
现在,我这样存储:
$cost = 10;
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), …Run Code Online (Sandbox Code Playgroud) 如何将成功函数返回的数据存储到全局变量中。
$("form").on("submit", function () {
var data = {
"action": "test"
};
data = $(this).serialize() + "&" + $.param(data);
$.ajax({
type: "POST",
dataType: "json",
url: "ajax2.php",
data: data,
success: function (data) {
//How to store the above data into a global variable?
$("#main_content").slideUp("normal", function () {
for (i = 0; i < data.length; i++) {
$(".the-return").append("<div class='inside_return'>Name:"
+ data[i].name + "<br/>Id:"
+ data[i].id + "<br/>Pricing:"
+ data[i].rate + "<br/>Postcode:"
+ data[i].postcode + "<br/>Reputation:"
+ data[i].reputation + "<br/>Review Plus:"
+ data[i].plus …Run Code Online (Sandbox Code Playgroud)