东子个人博客

PHP实现密码加密

  1. 1. 前言
  2. 2. 正文
    1. 2.1. Bcrypt加密是什么?
    2. 2.2. 如何在PHP中使用Bcrypt?
      1. 2.2.1. password_hash函数
      2. 2.2.2. password_verify()函数
  3. 3. 后记

前言

说起对密码加密,常见的莫不有密码加上盐值然后整体使用md5,这样,就算黑客能拿到用户密码存放的那张数据表,但因为盐值不一样,破解起来也是相当耗时耗力。而我自己之前使用的加密方式就更low了,我使用的同一盐值,直到我那天看康师傅有个课程的视频后,才知道有Bcrypt这个专门对密码仅加密的东西。

正文

Bcrypt加密是什么?

下面给到一段AI介绍:
Bcrypt加密

如何在PHP中使用Bcrypt?

因为我能力有限,平时做一些自己用的项目 开发api的时候,往往使用的php。在这里,主要介绍如何在PHP中使用Bcrypt。其实很简单,加密的时候使用**password_hash()函数,比对的时候使用password_verify()**函数。

password_hash函数

它有两个参数,第一个是密码明文,即我们想要加密的密码,比如123456、su666.等。在这里给一段示例代码:

<?php 

$password="123456";
$encoded_password=password_hash($password,PASSWORD_BCRYPT);
echo $encoded_password;


?>

我们打开浏览器,会发现网页中出现一串经过加密的字符串:
bcrypt加密后结果

那能否精确比对上呢?

password_verify()函数

这个函数有两个参数,第一个是密码明文,即我们前面所说的123456等,第二个是加密后的字符串。函数会使用特定的逻辑,去比对密码明文经过加密后是不是后面的字符串。下面给段示例代码:

$hash='$2y$10$Yn5PX34h3Vbg6r.2j77FjOqVe47d.EBMa4GYSJIUAZb1hSyzRT2.S';

echo "比对的结果是:".password_verify("123456",$hash);

我们打开网页,发现:
匹配结果

即完美匹配上

后记

以上就是本文全部内容,欢迎小伙伴们讨论交流。