以md5格式将密码插入数据库?

时间:2013-03-15 14:17:19

标签: php mysql

任何人都可以告诉我或解释我如何以md5格式将密码插入数据库?即使你可以指出我正确的方向或者我会感激的事情,因为我只是对mysql感谢的新人。

$query="INSERT INTO ptb_users (id,
user_id,
first_name,
last_name,
email )
VALUES('NULL',
'NULL',
'".$firstname."',
'".$lastname."',
'".$email."',
'".$password."'
)";
mysql_query($query) or dieerr();
$result = mysql_query("UPDATE ptb_users SET ptb_users.user_id=ptb_users.id");

5 个答案:

答案 0 :(得分:10)

使用MD5

$query="INSERT INTO ptb_users (id,
user_id,
first_name,
last_name,
email )
VALUES('NULL',
'NULL',
'".$firstname."',
'".$lastname."',
'".$email."',
MD5('".$password."')
)";

但是MD5是不安全的。使用SHA2

答案 1 :(得分:4)

不要使用MD5,因为它不安全。我建议将SHAbcryptsalt

一起使用
SHA256('".$password."')

http://en.wikipedia.org/wiki/Salt_(cryptography)

答案 2 :(得分:1)

Darren Davies说你应该使用盐是部分正确的 - 他声称MD5不安全有几个问题。

您已经说过必须使用Md5哈希插入密码,但这并不能告诉我们原因。是因为这是验证密码时使用的格式吗?您是否可以控制验证密码的代码?

关于使用salt的问题是,它避免了2个用户拥有相同密码的问题 - 他们也会有相同的哈希 - 不是理想的结果。通过为每个密码使用不同的盐,然后不会出现这种情况(由于存在大量数据,因此存在由两个不同密码引起冲突的风险 - 但我们现在将忽略它。)

因此,您既可以为salt生成随机值并将其存储在记录中,也可以使用您已经拥有的一些数据 - 例如用户名:

$query="INSERT INTO ptb_users (id,
        user_id,
        first_name,
        last_name,
        email )
        VALUES('NULL',
        'NULL',
        '".$firstname."',
        '".$lastname."',
        '".$email."',
        MD5('"$user_id.$password."')
        )";

(我假设您已经在代码中早先正确地转义了所有这些字符串)

答案 3 :(得分:0)

如果你想使用md5 encryptioon,你可以在php脚本

中完成
$pass = $_GET['pass'];

$newPass = md5($pass)

然后将其插入到数据库中,但MD5是一种单向加密方法,几乎​​不可能毫无困难地解密

答案 4 :(得分:0)

你可以在mysql中使用MD5()或在php中使用md5()。要使用salt,请在运行md5,f.e。:

之前将其添加到密码
$salt ='my_string';
$hash = md5($salt . $password);

最好为每个密码使用不同的盐。为此,您必须将您的salt保存在db(以及哈希)中。身份验证用户将发送他的登录并通过。你会在db中找到他的哈希和盐,并找出:

if ($hash == md5($salt . $_POST['password'])) {}