使用md5加密的安全性更高,即使更加困难。

35 浏览
0 Comments

使用md5加密的安全性更高,即使更加困难。

这个问题已经在这里有了答案:

可能的重复问题:

PHP密码的安全哈希和盐

我看到有人像这样编写密码哈希码,

md5(uniqid(mt_rand('password', 15), true));

这是一种安全的方法吗?这是否有效?

admin 更改状态以发布 2023年5月21日
0
0 Comments

这不仅是不安全的,而且根本不起作用。

mt_rand需要两个参数,一个最小值和一个最大值。

mt_rand('password', 15)

这将把'password'转换为一个整数(0),然后返回一个介于015之间的随机数。

uniqid(mt_rand('password', 15), true)

然后生成一个唯一的ID,并在其前面插入先前步骤的随机数:类似于计算以下内容:

144ffb22886d58e1.82100749

然后将该字符串进行md5散列。

正如您可能看到的,此代码是100%无用的。原始密码会被转换为0并永远丢失,所以您所做的就是散列随机数,这是毫无意义的。现在您拥有您的哈希值,没有办法再次验证它。由于密码已被转换,因此用户输入的任何内容都无关紧要。

因此,不,这个代码不安全,请不要使用它。

个人来说,我使用phpass库。它很安全,而且使用简单。

0
0 Comments

这不是一种安全的方法。它是可破解的,在你的例子中,它是不可重复的。你需要将随机值和哈希本身一起存储。如果数据库被攻击,破解哈希将变得非常简单。

你应该知道MD5和SHA1是PHP中可用的最弱密码散列算法之一。

更好的方法是使用crypt()函数,使用CRYPT_BLOWFISHPBKDF2

更新

另外,正如PeeHaa所提到的,这并不起作用。mt_rand('password', 15)会导致警告:mt_rand()预期的参数1为长整数,给出的是字符串,位于第X行

0