我正在寻找一种加密数据库密码的方法。
我在这里找到了一个与我类似的问题: How do I create and store md5 passwords in mysql
但我不知道盐是什么?我是否需要在用户和密码列旁边的表格中添加,我应该提供哪种数据类型?
$escapedName = mysql_real_escape_string($_POST['name']); # use whatever escaping function your db requires this is very important.
$escapedPW = mysql_real_escape_string($_POST['password']);
# generate a random salt to use for this account
$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
$saltedPW = $escapedPW . $salt;
$hashedPW = hash('sha256', $saltedPW);
$query = "insert into user (name, password, salt) values ('$escapedName', '$hashedPW', '$salt'); ";
答案 0 :(得分:0)
但我不知道盐是什么?
我是否需要在用户和密码列旁边的表格中添加
是的,它应该保存在users
表中。
因为检查密码,例如在登录时,您需要使用相同的算法从表单输入加密类型密码,并使用存储在数据库中的salt存储:
$typedPW = mysql_real_escape_string($_POST['password']); // from form input
$saltedPW = $typedPW . $salt; // $salt from db
$typedHashedPW = hash('sha256', $saltedPW); // compare it with db "password" value
并将此计算字符串与db中的password
字段(来自您的代码)中存储的字符串进行比较。
我应该给它什么数据类型
这是一个普通的字符串