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 相关文章推荐
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
PHP的博客ping服务代码
Feb 04 PHP
浅析php学习的路线图
Jul 10 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
php截取字符串函数分享
Feb 02 PHP
php英文单词统计器
Jun 23 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
thinkphp分页集成实例
Jul 24 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
php 代码优化的42条建议 推荐
2009/09/25 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[00:10]神之谴戒
2019/03/06 DOTA
Python写的服务监控程序实例
2015/01/31 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
ubuntu上安装python的实例方法
2019/09/30 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
python 制作网站小说下载器
2021/02/20 Python
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
《自然之道》教学反思
2014/02/11 职场文书
班组长岗位职责
2014/03/03 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
2014年审计工作总结
2014/11/17 职场文书
社区节水倡议书
2015/04/29 职场文书
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL