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 相关文章推荐
信用卡效验程序
Oct 09 PHP
php判断字符以及字符串的包含方法属性
Aug 30 PHP
PHP 翻页 实例代码
Aug 07 PHP
深入密码加salt原理的分析
Jun 06 PHP
php加密解密实用类分享
Jan 07 PHP
如何使用php实现评委评分器
Jul 31 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
php根据用户名和手机号查询是否存在手机号码
Feb 16 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
Jun 20 PHP
PHP判断函数是否被定义的方法
Jun 21 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 xfocus防注入资料
2008/04/27 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
js类式继承的具体实现方法
2013/12/31 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python入门教程之运算符与控制流
2016/08/17 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
小学教师师德反思
2014/02/03 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
公证委托书标准格式
2014/09/11 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
2015年节能减排工作总结
2015/05/14 职场文书
MySQL中连接查询和子查询的问题
2021/09/04 MySQL
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS