Php 使密码安全

Php 使密码安全,php,security,Php,Security,我目前正在寻找加密和存储用户密码的最佳实践。 此时,我正在JSON配置中存储一个由16个字符组成的“密钥”,我总是将该密钥和密码连接起来,以生成一个“安全”密码 如何更好地处理这种情况?每个密码有一个密钥足够安全吗?还是我应该放弃这种方法,转而使用好的ol数据库密码+盐存储 class PasswordHandler { private $_secret_key; private $_password; public function __construct($pas

我目前正在寻找加密和存储用户密码的最佳实践。 此时,我正在JSON配置中存储一个由16个字符组成的“密钥”,我总是将该密钥和密码连接起来,以生成一个“安全”密码

如何更好地处理这种情况?每个密码有一个密钥足够安全吗?还是我应该放弃这种方法,转而使用好的ol数据库密码+盐存储

class PasswordHandler
{
    private $_secret_key;

    private $_password;

    public function __construct($password = 'myVeryStrongPasswordThanNoneCouldBreak') {
        $this->_secret_key = 'i36P8JKnyuvaNDah';
        $this->_password   = $password;
        return $this;
    }

    public function processPassword() {
        return hash('sha256', $this->_secret_key . $this->_password);
    }
}

echo (new PasswordHandler)->processPassword();
此外:

  • 散列已经足够了,还是应该加密密码?SHA-256足够结实吗
  • 处理密码时,哪种哈希/加密算法是最佳选择
  • 亲切的问候

    SHA-256足够结实吗

    今天可以,但明天不行。通用散列的设计目的是快速,这就是为什么它们不是密码的好选择。您希望使用一个设计为需要大量计算工作的系统

    处理密码时,哪种哈希/加密算法是最佳选择

    在PHP中,唯一应该用来散列密码的东西是及其伙伴函数。如果您使用的是5.5之前的PHP版本,则可以使用

    另请注意:

    $this->_secret_key = 'i36P8JKnyuvaNDah';
    
    你的钥匙不再是秘密了

    SHA-256足够结实吗

    今天可以,但明天不行。通用散列的设计目的是快速,这就是为什么它们不是密码的好选择。您希望使用一个设计为需要大量计算工作的系统

    处理密码时,哪种哈希/加密算法是最佳选择

    在PHP中,唯一应该用来散列密码的东西是及其伙伴函数。如果您使用的是5.5之前的PHP版本,则可以使用

    另请注意:

    $this->_secret_key = 'i36P8JKnyuvaNDah';
    

    您的密钥不再是秘密。

    我将使用PHP函数password\u hash和bcrypt(crypt-blowfish):


    此外,您还可以阅读为什么我会将PHP函数password\u hash与bcrypt(crypt-blowfish)一起使用:


    您还可以阅读为什么查看
    password\u hash()
    函数。它为每个密码生成一个动态salt。我认为这样更好,因为如果有人找到了密钥,他就能够解密所有密码


    此功能与
    password\u verify($pass\u entered,$pass\u storage)
    查看
    password\u hash()函数一起使用。它为每个密码生成一个动态salt。我认为这样更好,因为如果有人找到了密钥,他就能够解密所有密码


    此功能用于
    密码验证($pass\u entered,$pass\u storage)

    您是否已从中检查
    密码哈希/密码验证
    ,请不要滚动您自己的密码哈希方案。PHP提供并请使用它们。这里有一些。如果您使用的是5.5之前的PHP版本,那么第一条安全规则就是不要编写自己的!Bcrypt可能是存储密码的最佳解决方案。请看这里您是否已从中检查了
    password\u hash/password\u verify
    ,请不要使用您自己的密码哈希方案。PHP提供并请使用它们。这里有一些。如果您使用的是5.5之前的PHP版本,那么第一条安全规则就是不要编写自己的!Bcrypt可能是存储密码的最佳解决方案。看看这里这个^7.x兼容吗?这个^7.x兼容吗?这篇文章真的很有帮助!谢谢这篇文章真的很有帮助!谢谢