在数据库中加密密码
Encrypt the password in the database
我正在寻找一种在数据库中加密密码的方法。
我在这里发现了一个与我类似的问题:
How do I create and store md5 passwords in mysql
但是我不知道盐是什么?我是否需要在我的 table 中添加用户和密码列,我应该给它什么数据类型?
$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'); ";
but I didn't know what is the salt ?
do I need to added in my table beside user and password columns
是的,它应该保存在您的 users
table 中。
因为要检查密码,例如在登录时,您需要使用相同的算法为该用户使用存储在数据库中的盐从表单输入中加密键入的密码:
$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
并将此计算出的字符串与存储在数据库 password
字段(来自您的代码)中的字符串进行比较。
what data type should I give it
是普通字符串
我正在寻找一种在数据库中加密密码的方法。
我在这里发现了一个与我类似的问题: How do I create and store md5 passwords in mysql
但是我不知道盐是什么?我是否需要在我的 table 中添加用户和密码列,我应该给它什么数据类型?
$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'); ";
but I didn't know what is the salt ?
do I need to added in my table beside user and password columns
是的,它应该保存在您的 users
table 中。
因为要检查密码,例如在登录时,您需要使用相同的算法为该用户使用存储在数据库中的盐从表单输入中加密键入的密码:
$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
并将此计算出的字符串与存储在数据库 password
字段(来自您的代码)中的字符串进行比较。
what data type should I give it
是普通字符串