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 相关文章推荐
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
php strlen mb_strlen计算中英文混排字符串长度
Jul 10 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
浅析php与数据库代码开发规范
Aug 08 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 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四种基础算法代码实例
2013/10/29 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
jquery中常用的SET和GET
2009/01/13 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
js实现文字滚动效果
2016/03/03 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
日本航空官方网站:JAL
2019/06/19 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
竞选部门副经理的自荐书范文
2014/02/11 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
合作意向书
2014/07/30 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
2014年教研组工作总结
2014/11/26 职场文书
团代会邀请函
2015/02/02 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
教师节慰问信
2015/02/15 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle