gpt4 book ai didi

php - 在 Cakephp 2.x 的 Auth 组件中使用 Md5 作为密码哈希

转载 作者:行者123 更新时间:2023-12-03 19:08:03 24 4
gpt4 key购买 nike

我有一个现有网站,使用 CakePhp 1.3 构建。在该网站中,我使用了 MD5 算法作为密码哈希值。

现在我想将我的 CakePhp 版本升级到 2.3.5,但我无法将 MD5 用于密码哈希。

我想知道为什么我不能在 CakePhp 2.x 中使用 MD5。 ?

最佳答案

密码不要使用md5

md5 不是用于散列密码的适当散列算法,请勿使用它。有很多很多引用资料可以解释原因 - 包括 the php manual :

Why are common hashing functions such as md5() and sha1() unsuitable for passwords?

Hashing algorithms such as MD5, SHA1 and SHA256 are designed to be very fast and efficient. With modern techniques and computer equipment, it has become trivial to "brute force" the output of these algorithms, in order to determine the original input.

Because of how quickly a modern computer can "reverse" these hashing algorithms, many security professionals strongly suggest against their use for password hashing.

如何更改默认哈希算法

您可以使用 setHash 更改默认的哈希算法, 一个 recommended hash algorithm for passwords是河豚:

Security::setHash('blowfish');

如何处理现有密码

如果你真的想,你可以将 setHash 更改为使用 md5。

但这不是一个好主意。

不要为了适应旧应用程序较差的安全性而损害新/更新应用程序的安全性。您可以使用如下逻辑(伪代码),而不是使用与之前应用程序相同的哈希算法(和盐):

$username = $this->data['User']['username'];
$plainText = $this->data['User']['password'];

$user = current($this->User->findByUsername($username));

Security::setHash('blowfish');
$blowfished = Security::hash($plainText, 'blowfish', $user['password']);

if ($blowfished === $user['password']) {
return true; // user exists, password is correct
}

$oldSalt = Configure::read('configure.this');
$md5ed = Security::hash($plainText, 'md5', $oldSalt);

if ($md5ed === $user['password']) {
$this->User->id = $user['id'];

$blowfished = Security::hash($plainText);
$this->User->saveField('password', $blowfished);

return true; // user exists, password now updated to blowfish
}

return false; // user's password does not exist.

这种逻辑并不复杂,并且避免了继续使用糟糕的哈希算法的需要。

关于php - 在 Cakephp 2.x 的 Auth 组件中使用 Md5 作为密码哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16585222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com