PHP实现的简单对称加密与解密方法实例小结


Posted in PHP onAugust 28, 2017

本文实例讲述了PHP实现的简单对称加密与解密方法。分享给大家供大家参考,具体如下:

方法一:YII自带的加密方法

/**
* 加密
* @var string [要加密的值]
*/
$secretKey = "wwj";
$data = $res['u_id'];
$encryptedData = Yii::$app->getSecurity()->encryptByPassword($data, $secretKey);
/**
* 解密
* @var [type] [加密前的值]
*/
$aid = $req->get('uid');
$secretKey = "wwj";
$uid = Yii::$app->getSecurity()->decryptByPassword($aid,$secretKey);

方法二:

/**
 * 安全URL编码
 * @param type $data
 * @return type
 */
function encode($data) {
 return str_replace(array('+', '/', '='), array('-', '_', ''), base64_encode(serialize($data)));
}
/**
* 安全URL解码
* @param type $string
* @return type
*/
function decode($string) {
 $data = str_replace(array('-', '_'), array('+', '/'), $string);
 $mod4 = strlen($data) % 4;
 ($mod4) && $data .= substr('====', $mod4);
 return unserialize(base64_decode($data));
}

方法三:

/**
* 加密
* @param [type] $code [description]
* @return [type]  [description]
*/
public static function encrypt($code)
{
 return urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5("key"), $code, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}
/**
 * 解密
 * @param [type] $code [description]
 * @return [type]  [description]
 */
public static function decrypt($code)
{
 return urldecode(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5("key"), base64_decode($code), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}

方法四:

/**
* 简单对称加密
* @param string $string [需要加密的字符串]
* @param string $skey [加密的key]
* @return [type]   [加密后]
*/
function encode($string = '', $skey = 'cxphp')
{
  $strArr = str_split(base64_encode($string));
  $strCount = count($strArr);
  foreach (str_split($skey) as $key => $value)
  $key < $strCount && $strArr[$key].=$value;
  return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr));
}
/**
* 简单对称解密
* @param string $string [加密后的值]
* @param string $skey [加密的key]
* @return [type]   [加密前的字符串]
*/
function decode($string = '', $skey = 'cxphp')
{
  $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);
  $strCount = count($strArr);
  foreach (str_split($skey) as $key => $value)
   $key <= $strCount && isset($strArr[$key]) && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];
  return base64_decode(join('', $strArr));
}
PHP 相关文章推荐
PHP 的 __FILE__ 常量
Jan 15 PHP
PHP下一个非常全面获取图象信息的函数
Nov 20 PHP
PHP生成excel时单元格内换行问题的解决方法
Aug 26 PHP
PHP 万年历实现代码
Oct 18 PHP
PHP编码转换
Nov 05 PHP
php实现自动获取生成文章主题关键词功能的深入分析
Jun 03 PHP
浅析php过滤html字符串,防止SQL注入的方法
Jul 02 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
php+mysql数据库查询实例
Jan 21 PHP
php使用for语句输出三角形的方法
Jun 09 PHP
浅谈PDO的rowCount函数
Jun 18 PHP
laravel实现于语言包的完美切换方法
Sep 29 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 #PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 #PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 #PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 #PHP
PHP实现的简单sha1加密功能示例
Aug 27 #PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 #PHP
You might like
数据库查询记录php 多行多列显示
2009/08/15 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
php继承的一个应用
2011/09/06 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
JavaScript 高效运行代码分析
2010/03/18 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python 实现简单的电话本功能
2015/08/09 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
Python八皇后问题解答过程详解
2019/07/29 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
PyTorch安装与基本使用详解
2020/08/31 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
财务出纳员岗位职责
2013/11/26 职场文书
幼儿教育感言
2014/02/05 职场文书
股权投资意向书
2014/04/01 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
2015年收银工作总结范文
2015/04/01 职场文书