codigosecafe/grifo-hash

Grifo é uma classe PHP para gerar hashing de senha e validação.

1.0.5 2020-04-27 22:10 UTC

This package is auto-updated.

Last update: 2024-09-28 07:49:35 UTC


README

希望这个类可以帮助您实现系统密码的哈希处理。这个类是在 Laravel 上创建和测试的。

安装

composer require codigosecafe/grifo-hash

关于 GrifoHash 类

GrifoHash 是一个 PHP 类,用于生成密码哈希和验证。GrifoHash 类的名字是受电影《模仿游戏》中密码学启发的同义词。它通过结合一些编码和哈希生成方法,使密码比仅使用 MD5、SHA-1、SHA-256 或 SHA-512 等方法更安全。这些方法虽然履行了承诺,但安全性较差。GrifoHash 类除了使用这些方法外,还使用 bcrypt/blowfish 标准进行哈希处理。

建议阅读英文文章:[bcrypt](https://en.wikipedia.org/wiki/Bcrypt)

将 GrifoHash 类添加到我的项目中

要添加该类,只需通过 "use" 方法将其导入到您的项目中。例如:

<?php 
use codigosecafe\GrifoHash;

GrifoHash 类的主要方法

::make_password()

负责生成将在数据库中存储的密码哈希的方法。无论密码是什么,总会生成唯一的哈希。请注意,哈希总是由 60 个字符组成,因此您可以将存储密码的列定义为 CHAR(60) 或 VARCHAR(60),当然如果您正在使用 MySQL/MariaDB。 ;)

加密密码

要加密密码,只需将用户输入的值分配给一个变量,并执行 make_password() 方法。例如:在 Laravel 上已测试

<?php
namespace App\Http\Controllers;

use codigosecafe\GrifoHash;

class meuController extends Controller {

    public static function index() {

      // Instancio a classe GrifoHash
      $GrifoHash = new GrifoHash();

      //####################################################################// 

      // Senha digitada pelo usuario
      $senha_digitada = '1q2w3e4r'; // a senha pode ser coletada via o método $_POST ou $_GET
      // Gero o hashing da senha para ser salva no banco de dados
      $senha_gerada = $GrifoHash::make_password($senha_digitada);
      // Agora basta armazenar o valor da variavel $senha_gerada no campo senha da tabela do seu banco de dados
      echo "Senha gerada com hashing aleatorio e unico<br/>";
      echo "<b>$senha_gerada</b>";
      echo "<br/>Se a pagina for atualizada sera gerado outro hash<br/>";

    }

}

::check_pass()

负责比较和验证密码哈希的方法。由于我们正在处理随机生成的哈希,因此无法生成与数据库中哈希相同的新哈希。但 bcrypt/blowfish 允许我验证密码。例如:在 Laravel 上已测试

<?php
namespace App\Http\Controllers;

use codigosecafe\GrifoHash;

class meuController extends Controller {

    public static function index() {

    	// Instancio a classe GrifoHash
      $GrifoHash = new GrifoHash();

      //####################################################################// 

      // Senha digitada pelo usuario
      $senha_digitada = '1q2w3e4r'; // a senha pode ser coletada via o método $_POST ou $_GET

      // Para comparar a senha digitada com a senha salva no bando de dados
      // primeiro devo buscar a senha a ser comparada no banco
      // e atribuir ela a uma variavel 
      $senha_DB = '$2a$08$MTU4NDc5MDAxNDU5Mjc5Z.Nx0ZOYEiUDaOpyEMHZNNUYuJDHRgzI2'; // Senha salva no banco de dados com 60 caracters

      // Agora basta rodar o metodo de checagem dos hashing
      if ($GrifoHash::check_pass($senha_digitada, $senha_DB)) {
          echo 'Senha OK!';
      } else {
          echo 'Senha incorreta!';
      }

    }

}
注意:如果您想了解类中所有方法的实现,可以阅读 src/GrifoHash/GrifoHash.php 文件中的源代码。

作者:Claudio Alexssandro Lino

我是一个全栈开发者,喜欢参与项目的所有阶段,从创建线框图、配置服务器、通过敏捷方法规划故事,到编码后端和前端。

我在 Laravel 框架(4 年)方面有经验。在我的职业生涯中,我承担了多个职能,使我成为一名全栈开发者,执行了各种工作,如网页设计、网络插图师、社交媒体经理、专注于 HTML 结构的 SEO 咨询师、Web 和桌面应用程序的后端开发、基于 Linux 的 Web 服务器配置和维护。

专长:PHP、AngularJS、MySQL、PostgreSQL、MariaDB、PHP Laravel 框架、Intel® XDK、Ionic、Smarty 模板 - Blade 模板 - Bootstrap - PHP CodeIgniter 框架、Wordpress、Linux、JavaScript、jQuery 以及 Ajax、GIT 和 Vagrant。

codigosecafe+git@gmail.com | Skype: claudio.alexssandro | https://www.linkedin.com/in/claudioalexssandrolino/