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 相关文章推荐
一些 PHP 管理系统程序中的后门
Aug 05 PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
PHP 错误处理机制
Jul 06 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
PHP操作XML中XPath的应用示例
Jul 04 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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 之 没有mysql支持时的替代方案
2006/10/09 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
深入理解Webpack 中路径的配置
2017/06/17 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
python利用platform模块获取系统信息
2020/10/09 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
python如何调用php文件中的函数详解
2020/12/29 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
html5 input属性使用示例
2013/06/28 HTML / CSS
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
Weblogc domain问题
2014/01/27 面试题
电子银行营销方案
2014/02/22 职场文书
幼儿园秋游感想
2014/03/12 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
Python基础详解之邮件处理
2021/04/28 Python
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS