前言
在实际项目中对用户密码的加密方式使用简单的md5加密已过时,实际上在md5的加密方式是很容易被反md5解析的,而这种解密方式已得到了普及。在这我封装了一个哈希加密类,相对提高了密码的加密安全强度,同时也基于面向对象思想给了封装,提高了复用性,基于tp5的extend做了相应插件封装一件接入
注意事项
- 我的测试环境thinkphp5.0+mysql(php>=5.4)
- mysql 密码字段password varchar 255(最好这样设置,php文档也有这样推荐)
- 原始密码及加密之前的密码长度不能超过72个字符
使用场景
- 用户注册、忘记密码等需要新密码时,使用此类密码加密方法Password::hash();
- 登陆、需要密码验证时使用此类密码验证方法Password::verify();
步骤
一. 类库下载和融入项目
- 主页地址(点击)
-
不管你用git还是Download ZIP 下载 最终的目的是得到源码
下载方式 -
下载后调整文件夹的结构如图 文件夹结构应该是password/Password.php(注意大小写)
下载后调整文件结构
-
把3中整理好的文件加一起剪切到项目extend的文件夹下,如图
融入项目
二. 加密的使用
- 使用步骤
//用户的原始密码
$password = 12345;
//调用加密类
$hashPassword = Password::hash($password);
//打印加密后的密码($hashPasword用于保存数据库)
var_dump($hashPassword);
- 注意事项:在使用Password类时在类的顶部需要引入类的命名空间use password\Password; 如果是用phpStrom等IDE工具是有自动感应和补全功能,当输入Passwod时就会自动补全了
- 得到$hashPassword时就可以把此数据存入数据库了
三.密码校验的使用
- 使用步骤
//客户端输入的密码
$password = '123456';
//数据库读取加密后的密码
$hashPassword='$12$yaxQrgZ27wgX9EaQX2vmteAv3cCS3oNO4wkfWRrGQJq3zJcs7f5c.';
//进行密码匹配 $res是布尔值 $res === true 匹配成功,$res===false 匹配失败
$res = Password::verify($password,$hashPassword);
- 命名空间的引入同加密
小伙伴们是不是觉得很简单,快去动手试试吧!有什么疑问欢迎留言!
欢迎点赞,收藏,您的鼓励是我前进的最大动力! 如果您兴趣好给我打赏,我也不会拒绝的.
网友评论