【问题标题】:Class to hash password using bcrypt使用 bcrypt 对密码进行哈希处理的类
【发布时间】:2014-01-31 13:09:38
【问题描述】:

我对 PHP 有基本的了解,但我想学习如何使用类来制作我的程序 OOP,所以我尝试了一个简单的类,它会为密码生成哈希值,我正在使用 bcrypt用于散列。

到目前为止我写的代码是这样的:

PasswordHash.php

class PasswordHash {
    public static function generate_bcrypt($user_password) {
        return $this->password = password_hash($user_password, PASSWORD_DEFAULT);
    }
}

PasswordHash.php 位于类文件夹中。

index.php

    spl_autoload_register(function($class){
        require_once 'classes/' . $class . '.php';
    });

    $password = 'mypassword';

    echo $hashed = PasswordHash::generate_bcrypt($password);

当我检查它是否正常工作时,什么也没有发生。有人可以帮我弄这个吗?我的代码是否遗漏了什么?提前致谢。

【问题讨论】:

  • 首先,当公共变量不存在时,您将返回 $this->password,并且由于您正在静态调用该函数,因此您不能使用 $this
  • 您这样做只是添加了不必要的工作。尤其是当你可以调用 password_hash()
  • @LiamSorsby 他写这篇文章是为了学习如何使用类。
  • @arkascha 是的,我知道这没有什么问题。我只是说在这种特殊情况下,最简单的方法是直接调用函数
  • 另见 Openwall 的 Portable PHP password hashing framework (PHPass)。它强化了对用户密码的一些常见攻击。

标签: php class hash password-protection bcrypt


【解决方案1】:

将其作为对象调用

class PasswordHash {
        public function generate_bcrypt($user_password) {
            return password_hash($user_password, PASSWORD_DEFAULT);
        }
}

$password = 'password';
$passwordhash = new PasswordHash();
echo $passwordhash->generate_bcrypt($password);

使用静态方法调用它

class PasswordHash {
        public static function generate_bcrypt($user_password) {
            return password_hash($user_password, PASSWORD_DEFAULT);
        }
}

$password = 'password';
echo PasswordHash::generate_bcrypt($password);

您需要调整它以适应您的类文件的分离,但您可以从示例中获得总体思路。

【讨论】:

  • 哇!非常感谢您,现在我的代码正在运行,感谢您的帮助:)
猜你喜欢
  • 2011-03-04
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 2012-05-06
相关资源
最近更新 更多