Yii 实现数据加密和解密的示例代码
时间:2022-07-27
本文章向大家介绍Yii 实现数据加密和解密的示例代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在Yii中又很多的数据我们不能够以明文进行存储和展示,例如密码和一些比较重要的文件信息,这时候我们都需要我们对这些信息进行加密
一:对密码进行加密和验证客户端传输的密码是否正确
1:对密码进行加密
$hash = Yii::$app- getSecurity()- generatePasswordHash($password);
2:对客户端传递的密码进行验证,判断是否正确
//$password:客户端传递的明文密码,$hash:对密码进行加密后的哈希值
if (Yii::$app- getSecurity()- validatePassword($password, $hash)) {
// 验证成功(密码正确)
} else {
// 验证失败(密码错误)
}
二:生成一个伪随机数据
在我们进行密码重置的时候,我们经常会发送一份邮件到用户邮箱中,给他一个重置的密码,这时候我们就可以使用Yii的伪随机数据方法给用户生成一个伪随机数据作为密码
//默认生成32为随机字符,可以指定位数生成指定位数的伪随机数
$key = Yii::$app- getSecurity()- generateRandomString();
三:Yii常见的数据加密和解密
Yii常见的加密方法有:encryptByPassword()和encryptByKey()
Yii常见的解密方法有:decryptByPassword()和decryptByKey()
1:encryptByPassword()和decryptByPassword()
加密:
//$data:需要加密的信息,$secretKey:加密时使用的密钥(key)
$encryptedData = Yii::$app- getSecurity()- encryptByPassword($data, $secretKey);
解密:
//$encryptedData:需要解密的信息,$secretKey:加密时使用的密钥(key)
$data = Yii::$app- getSecurity()- decryptByPassword($encryptedData, $secretKey);
1:encryptByKey()和decryptByKey()
加密:
//$data:需要加密的信息,$secretKey:加密时使用的密钥(key)
$encryptedData = Yii::$app- getSecurity()- encryptByKey($data, $secretKey);
解密:
//$encryptedData:需要解密的信息,$secretKey:加密时使用的密钥(key)
$data = Yii::$app- getSecurity()- decryptByKey($encryptedData, $secretKey);
以上就是本文的全部内容,希望对大家的学习有所帮助。
- Fityk-曲线拟合工具
- maven: 打包可运行的jar包(java application)及依赖项处理
- Effective java 第2版 - 笔记(01) 单例(Singleton)的枚举(enum)实现
- 恶心的0.5四舍五入问题
- 乐视金融更名 相关域名引关注
- weblogic.nodemanager.common.ConfigException: Native version is enabled but nodemanager native librar
- hadoop 2.6伪分布安装
- ssh 免密码设置失败原因总结
- C++服务器开发之基于对象的编程风格
- The jQuery UI CSS Framework
- hadoop:将WordCount打包成独立运行的jar包
- Hadoop: MapReduce2多个job串行处理
- UE4新手引导之下载和安装虚幻4游戏引擎
- mac 下卸载mysql的方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Springboot+mybatis最简单的增删改查写法
- Head First设计模式——观察者模式
- spring security oauth2 资源服务/客户端无法正确获取权限
- EXTJS grid.column.renderer绑定失效
- Head First设计模式——装饰者模式
- spring security oauth2 资源服务器WebAsyncTask/DeferredResult接口调用报错InsufficientAuthenticationException
- Head First设计模式——简单工厂、工厂、抽象工厂
- Golang | 简介channel常见用法,完成goroutin通信
- Head First设计模式——单例模式
- 【日拱一卒】链表——两个有序的链表合并
- Head First设计模式——命令模式
- Flask表单之WTForms和flask-wtf
- Head First设计模式——适配器和外观模式
- 「2020最新」Spring最易学习教程 4—整合Mybatis 事务控制
- Head First设计模式——模板方法模式