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
Dec 23 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
PHP递归返回值时出现的问题解决办法
Feb 19 PHP
解析Win7 XAMPP apache无法启动的问题
Jun 26 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 PHP
CI配置多数据库访问的方法
Mar 28 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
实例讲解PHP页面静态化
Feb 05 PHP
PHP日志LOG类定义与用法示例
Sep 06 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
PHP遍历数组的6种方式总结
Nov 17 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
构建简单的Webmail系统
2006/10/09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
PHP 图像尺寸调整代码
2010/05/26 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
JavaScript 学习笔记(十一)
2010/01/19 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
2020/02/11 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
Python实现多行注释的另类方法
2014/08/22 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
Python序列类型的打包和解包实例
2019/12/21 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
应届大学生自荐信
2013/12/05 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
合作意向书怎么写
2019/06/24 职场文书