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 相关文章推荐
我的论坛源代码(十)
Oct 09 PHP
php自动适应范围的分页代码
Aug 05 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
Jun 21 PHP
基于php的微信公众平台开发入门实例
Apr 15 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
PHP实现的XML操作类【XML Library】
Dec 29 PHP
php实现简单的权限管理的示例代码
Aug 25 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
php格式文件打开的四种方法
Feb 24 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 PHP
PHP7创建销毁session的实例方法
Feb 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中路径问题的解决方案
2006/10/09 PHP
php通过ajax实现双击table修改内容
2014/04/28 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
Python模块学习 re 正则表达式
2011/05/19 Python
详解python数据结构和算法
2019/04/18 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
Python模块future用法原理详解
2020/01/20 Python
500行python代码实现飞机大战
2020/04/24 Python
python中线程和进程有何区别
2020/06/17 Python
Python内置函数及功能简介汇总
2020/10/13 Python
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
物价局领导班子四风问题整改措施
2014/10/26 职场文书
2014财务年终工作总结
2014/12/08 职场文书
中学教代会开幕词
2016/03/04 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
Elasticsearch 基本查询和组合查询
2022/04/19 Python
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技