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字符串 ==比较运算符的副作用
Oct 21 PHP
PHP中调用ASP.NET的WebService的代码
Apr 22 PHP
php Calender(日历)代码分享
Jan 03 PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 PHP
PHP5.5在windows安装使用memcached服务端的方法
Apr 16 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
php中unserialize返回false的解决方法
Sep 22 PHP
PHP单态模式简单用法示例
Nov 16 PHP
CI框架实现优化文件上传及多文件上传的方法
Jan 04 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 PHP
PHP命名空间namespace及use的简单用法分析
Aug 03 PHP
laravel异步监控定时调度器实例详解
Jun 21 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
vuex实现简易计数器
2016/10/27 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
vuejs指令详解
2017/02/07 Javascript
详解vue服务端渲染(SSR)初探
2017/06/19 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
Python中正则表达式详解
2017/05/17 Python
Python 装饰器使用详解
2017/07/29 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
Django中的AutoField字段使用
2020/05/18 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
实习销售业务员自我鉴定
2013/09/21 职场文书
公司周年庆典邀请函
2014/01/12 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
财务工作个人总结
2015/02/27 职场文书
公司2015年终工作总结
2015/05/26 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
canvas 中如何实现物体的框选
2022/08/05 Javascript