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用户指南-cookies部分
Oct 09 PHP
PHP 开源AJAX框架14种
Aug 24 PHP
非常好用的两个PHP函数 serialize()和unserialize()
Feb 04 PHP
PHP取整数函数常用的四种方法小结
Jul 05 PHP
浅析PHP文件下载原理
Dec 25 PHP
php获取YouTube视频信息的方法
Feb 11 PHP
Laravel 5框架学习之环境与配置
Apr 08 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
PHP new static 和 new self详解
Feb 19 PHP
PHP扩展类型及安装方式解析
Apr 27 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
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
Python、Javascript中的闭包比较
2015/02/04 Python
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
python利用不到一百行代码实现一个小siri
2017/03/02 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
python中操作文件的模块的方法总结
2021/02/04 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
网站开发实习生的自我评价
2013/12/11 职场文书
会计职业生涯规划书
2014/01/13 职场文书
小学生环保倡议书
2014/05/15 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
大学生安全责任书
2014/07/25 职场文书
市场营销毕业求职信
2014/08/07 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
小爸爸观后感
2015/06/15 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP