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 相关文章推荐
一道求$b相对于$a的相对路径的php代码
Aug 08 PHP
PHP获取表单textarea数据中的换行问题
Sep 10 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
php购物车实现方法
Jan 03 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
php操作access数据库的方法详解
Feb 22 PHP
php实现表单提交上传文件功能
May 28 PHP
PHP操作Redis数据库常用方法示例
Aug 25 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
模仿OSO的论坛(一)
2006/10/09 PHP
php中cookie的使用方法
2014/03/29 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
Python判断字符串与大小写转换
2015/06/08 Python
Python使用turtule画五角星的方法
2015/07/09 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
Python3匿名函数用法示例
2018/07/25 Python
python命令行工具Click快速掌握
2019/07/04 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
大学校园毕业自我鉴定
2014/01/15 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
物理学专业求职信
2014/07/04 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers