16

谁能告诉我或解释我如何将密码以 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");
4

5 回答 5

14

使用MD5

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

MD5不安全。使用SHA2.

于 2013-03-15T14:18:38.073 回答
4

不要使用MD5,因为它不安全。我建议使用SHAor :bcryptsalt

SHA256('".$password."')

http://en.wikipedia.org/wiki/Salt_(密码学)

于 2013-03-15T14:20:37.870 回答
1

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

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

使用盐的问题在于,它避免了 2 个用户具有相同密码的问题——他们也将具有相同的哈希值——这不是一个理想的结果。通过为每个密码使用不同的盐,就不会出现这种情况(对于非常大量的数据,仍然存在由 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."')
        )";

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

于 2013-03-15T15:29:37.580 回答
0

如果你想使用 md5 加密,你可以在你的 php 脚本中进行

$pass = $_GET['pass'];

$newPass = md5($pass)

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

于 2013-03-15T14:42:03.010 回答
0

您可以在 mysql 中使用 MD5() 或在 php 中使用 md5()。要使用 salt 在运行 md5 之前将其添加到密码中,fe:

$salt ='my_string';
$hash = md5($salt . $password);

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

if ($hash == md5($salt . $_POST['password'])) {}
于 2013-03-15T14:59:05.567 回答