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中,文件上传
Dec 06 PHP
PHP 常用函数库和一些实用小技巧
Jan 01 PHP
小文件php+SQLite存储方案
Sep 04 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
php学习笔记 PHP面向对象的程序设计
Jun 13 PHP
用php解析html的实现代码
Aug 08 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
PHP children()函数讲解
Feb 03 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中的UNICODE 编码与解码
2013/06/29 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
PHP基于Closure类创建匿名函数的方法详解
2017/08/17 PHP
prototype1.4中文手册
2006/09/22 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
js解决movebox移动问题
2016/03/29 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
在Python的while循环中使用else以及循环嵌套的用法
2015/10/14 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
python实现微信自动回复功能
2018/04/11 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
Django REST framework内置路由用法
2019/07/26 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
《十六年前的回忆》教学反思
2014/02/14 职场文书
秋季校运动会广播稿
2014/02/23 职场文书
基层党组织整改方案
2014/10/25 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
长江七号观后感
2015/06/11 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python