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函数(简单整理)
Apr 30 PHP
php INI配置文件的解析实现分析
Jan 04 PHP
thinkphp常见路径用法分析
Dec 02 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
Zend Framework教程之Zend_Db_Table用法详解
Mar 21 PHP
CI框架整合widget(页面格局)的方法
May 17 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
May 21 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
PHP简单实现循环链表功能示例
Nov 10 PHP
php获取微信基础接口凭证Access_token
Aug 23 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 #PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 #PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 #PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 #PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
Aug 18 #PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 #PHP
You might like
详细介绍PHP应用提速面面观
2006/10/09 PHP
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
详解python读取image
2019/04/03 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
Python实现图片添加文字
2019/11/26 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
会计专业个人自我鉴定
2014/03/21 职场文书
财会专业大学生求职信
2014/09/26 职场文书
工作失职检讨书500字
2014/10/17 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript