Yii 实现数据加密和解密

在Yii中有很多数据不能够以明文进行存储和展示,例如密码和一些比较重要的文件信息,这时候需要对这些信息进行加密。

Posted in PHP onMarch 09, 2021

对密码进行加密和验证客户端传输的密码是否正确

对密码进行加密

$hash = Yii::$app->getSecurity()->generatePasswordHash($password);

对客户端传递的密码进行验证,判断是否正确

//$password:客户端传递的明文密码,$hash:对密码进行加密后的哈希值 
if (Yii::$app->getSecurity()->validatePassword($password, $hash)) { 
  // 验证成功(密码正确) 
} else { 
  // 验证失败(密码错误) 
}

 

生成一个伪随机数据

在进行密码重置的时候,经常会发送一份邮件到用户邮箱中,这时候可以使用Yii的伪随机数据方法给用户生成一个伪随机数据作为密码

//默认生成32为随机字符,可以指定位数生成指定位数的伪随机数 
$key = Yii::$app->getSecurity()->generateRandomString();

 

Yii常见的数据加密和解密

//$data:需要加密的信息,$secretKey:加密时使用的密钥(key) 
$encryptedData = Yii::$app->getSecurity()->encryptByPassword($data, $secretKey); 

//$encryptedData:需要解密的信息,$secretKey:加密时使用的密钥(key) 
$data = Yii::$app->getSecurity()->decryptByPassword($encryptedData, $secretKey); 

//$data:需要加密的信息,$secretKey:加密时使用的密钥(key) 
$encryptedData = Yii::$app->getSecurity()->encryptByKey($data, $secretKey); 

//$encryptedData:需要解密的信息,$secretKey:加密时使用的密钥(key) 
$data = Yii::$app->getSecurity()->decryptByKey($encryptedData, $secretKey);

 

PHP 相关文章推荐
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
PHP读取txt文件的内容并赋值给数组的代码
Nov 03 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
php关闭warning问题的解决方法
May 17 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
php查询及多条件查询
Feb 26 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 PHP
TP5框架简单登录功能实现方法示例
Oct 31 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 #PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 #PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 09 #PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 09 #PHP
Swoole扩展的6种模式深入详解
Mar 04 #PHP
php中Swoole的热更新实现代码实例
Mar 04 #PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 #PHP
You might like
整合了前面的PHP数据库连接类~~做成一个分页类!
2006/11/25 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
thinkPHP查询方式小结
2016/01/09 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
Python中动态检测编码chardet的使用教程
2017/07/06 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
Python 转换文本编码实现解析
2019/08/27 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
python实现磁盘日志清理的示例
2020/11/05 Python
python解包概念及实例
2021/02/17 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
新三好学生主要事迹
2014/01/23 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
公司2014年度工作总结
2014/12/10 职场文书
公司搬迁通知
2015/04/20 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python