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查询域名状态whois的类
Nov 25 PHP
PHP 实用代码收集
Jan 22 PHP
浅析PHP Socket技术
Aug 02 PHP
一个PHP的ZIP压缩类分享
May 04 PHP
分享一个php 的异常处理程序
Jun 22 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
php使用iconv中文截断问题的解决方法
Feb 11 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
PHP中子类重载父类的方法【parent::方法名】
May 06 PHP
php实现算术验证码功能
Dec 05 PHP
php实现QQ小程序发送模板消息功能
Sep 18 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
截获网站title标签之家内容的例子
2006/10/09 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
javaScript同意等待代码实现心得
2011/01/01 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
python 数据加密代码
2008/12/24 Python
Python的requests网络编程包使用教程
2016/07/11 Python
Django+Ajax+jQuery实现网页动态更新的实例
2018/05/28 Python
python 图像平移和旋转的实例
2019/01/10 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
个人求职简历的自我评价范文
2013/10/09 职场文书
就业协议书怎么填
2014/04/11 职场文书
公司财务部岗位职责
2015/04/14 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
山楂树之恋观后感
2015/06/11 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
PHP实现两种排课方式
2021/06/26 PHP
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技