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 IPV6正则表达式验证代码
Feb 16 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
PHP中数组定义的几种方法
Sep 01 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
CodeIgniter基于Email类发邮件的方法
Mar 29 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
功能强大的PHP发邮件类
Aug 29 PHP
PHP的自定义模板引擎
Mar 24 PHP
php mysql_list_dbs()函数用法示例
Mar 29 PHP
PHP使用new StdClass()创建空对象的方法分析
Jun 06 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 PHP
Nginx+php配置文件及原理解析
Dec 09 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
信用卡效验程序
2006/10/09 PHP
PHP 输出简单动态WAP页面
2009/06/09 PHP
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
js DataSet数据源处理代码
2010/03/29 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
在Python中使用成员运算符的示例
2015/05/13 Python
python生成IP段的方法
2015/07/07 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
pycharm修改file type方式
2019/11/19 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
如何通过python检查文件是否被占用
2020/12/18 Python
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
网络技术专业推荐信
2014/02/20 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
个人先进材料范文
2014/12/30 职场文书
演讲开场白台词大全
2015/05/29 职场文书
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技