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 相关文章推荐
玩转图像函数库―常见图形操作
Sep 03 PHP
php 生成WML页面方法详解
Aug 09 PHP
深入PHP autoload机制的详解
Jun 09 PHP
PHP获取网页标题的3种实现方法代码实例
Apr 11 PHP
php除数取整示例
Apr 24 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
php实现通用的信用卡验证类
Mar 24 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
laravel 配置路由 api和web定义的路由的区别详解
Sep 03 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加密函数 Javascript/Js 解密函数
2013/09/23 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
JavaScript 面向对象之命名空间
2010/05/04 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
pycharm修改file type方式
2019/11/19 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
Python之字典对象的几种创建方法
2020/09/30 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
什么是servlet
2012/05/08 面试题
文员自我评价怎么写
2013/09/19 职场文书
电大自我鉴定范文
2013/10/01 职场文书
幼儿园春游活动方案
2014/01/19 职场文书
三个儿子教学反思
2014/02/03 职场文书
会议通知格式范文
2015/04/15 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python
python开发的自动化运维工具ansible详解
2021/08/07 Python
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL