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 xml留言板 xml存储数据的简单例子
Aug 24 PHP
php 截取字符串并以零补齐str_pad() 函数
May 07 PHP
解析PHP自带的进位制之间的转换函数
Jun 08 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
laravel 5 实现模板主题功能
Mar 02 PHP
php中二分法查找算法实例分析
Sep 22 PHP
基于php编程规范(详解)
Aug 17 PHP
浅析PHP数据导出知识点
Feb 17 PHP
PHP通过GD库实现验证码功能示例
Feb 23 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 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/10/09 PHP
php5新改动之短标记启用方法
2008/09/11 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
2018/05/28 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
python打印异常信息的两种实现方式
2019/12/24 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
交通事故协议书
2014/04/15 职场文书
团日活动总结书格式
2014/05/08 职场文书
员工培训协议书
2014/09/15 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang