PHP加密解密实例分析


Posted in PHP onDecember 25, 2015

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

//加密
function string2secret($str)
{
 $key = "123";
 $td = mcrypt_module_open(MCRYPT_DES,'','ecb','');
 $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
 $ks = mcrypt_enc_get_key_size($td);
 $key = substr(md5($key), 0, $ks);
 mcrypt_generic_init($td, $key, $iv);
 $secret = mcrypt_generic($td, $str);
 mcrypt_generic_deinit($td);
 mcrypt_module_close($td);
 return $secret;
}
//解密
function secret2string($sec)
{
 $key = "123";
 $td = mcrypt_module_open(MCRYPT_DES,'','ecb','');
 $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
 $ks = mcrypt_enc_get_key_size($td);
 $key = substr(md5($key), 0, $ks);
 mcrypt_generic_init($td, $key, $iv);
 $string = mdecrypt_generic($td, $sec);
 mcrypt_generic_deinit($td);
 mcrypt_module_close($td);
 return trim($string);
}
echo secret2string(string2secret("11111111111111111"));
//显示结果是11111111111111111
echo '<br>'.string2secret("11111111111111111");
//显示乱码
echo '<br>';
//$string:要加密的字符串 $isEncrypt=true:加密 $isEncrypt=false:解密
function dencrypt($string, $isEncrypt = true, $key = "KEY_SPACE") {
 if (!isset($string{0}) || !isset($key{0})) {
  return false;
 }
 $dynKey = $isEncrypt ? hash('sha1', microtime(true)) : substr($string, 0, 40);
 $fixedKey = hash('sha1', $key);
 $dynKeyPart1 = substr($dynKey, 0, 20);
 $dynKeyPart2 = substr($dynKey, 20);
 $fixedKeyPart1 = substr($fixedKey, 0, 20);
 $fixedKeyPart2 = substr($fixedKey, 20);
 $key = hash('sha1', $dynKeyPart1 . $fixedKeyPart1 . $dynKeyPart2 . $fixedKeyPart2);
 $string = $isEncrypt ? $fixedKeyPart1 . $string . $dynKeyPart2 : (isset($string{339}) ? gzuncompress(base64_decode(substr($string, 40))) : base64_decode(substr($string, 40)));
 $n = 0;
 $result = '';
 $len = strlen($string);
 for ($n = 0; $n < $len; $n++) {
  $result .= chr(ord($string{$n}) ^ ord($key{$n % 40}));
 }
 return $isEncrypt ? $dynKey . str_replace('=', '', base64_encode($n > 299 ? gzcompress($result) : $result)) : substr($result, 20, -20);
}
echo strlen(dencrypt("12345678912345"));

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个高ai的分页函数和一个url函数
Oct 09 PHP
初品cakephp 入门基础
Feb 16 PHP
php数据类型判断函数有哪些
Sep 23 PHP
php上传文件,创建递归目录的实例代码
Oct 18 PHP
phpQuery占用内存过多的处理方法
Nov 13 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
Sep 26 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
php桥接模式应用案例分析
Oct 23 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 PHP
PHP时间类完整实例(非常实用)
Dec 25 #PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 #PHP
php实现scws中文分词搜索的方法
Dec 25 #PHP
php自定义分页类完整实例
Dec 25 #PHP
php导出生成word的方法
Dec 25 #PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 #PHP
[原创]PHP实现逐行删除文件右侧空格的方法
Dec 25 #PHP
You might like
php简单静态页生成过程
2008/03/27 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
详解php的socket通信
2015/08/11 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
Three.js基础学习之场景对象
2017/09/27 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
pygame播放音乐的方法
2015/05/19 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
Python I/O与进程的详细讲解
2019/03/08 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
详解python中的数据类型和控制流
2019/08/08 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
南京大屠杀观后感
2015/06/02 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python