php加密解密实用类分享


Posted in PHP onJanuary 07, 2014

用户注册的密码一般不会明文保存,总得加个密先。最简单的当然是在数据库sql语句中调用md5函数加密用户密码。这里介绍一个加解密类。如果你想在用户忘记密码时为他或她找回原来的密码,那么这个类是个好用的工具。当然,这个加解密类也可用于其他用途。

<?phpclass crypt {
    private $skey;
    public function __construct($key) {
        $this->skey = hash("md5", $key, true); //32位skey
    }
    public function safe_b64encode($string) {
        $data = base64_encode($string);
        $data = str_replace(array('+', '/', '='), array('-', '_', ''), $data);
        return $data;
    }
    public function safe_b64decode($string) {
        $data = str_replace(array('-', '_'), array('+', '/'), $string);
        $mod4 = strlen($data) % 4;
        if ($mod4) {
            $data .= substr('====', $mod4);
        }
        return base64_decode($data);
    }
    public function encode($value) {
        if (!$value) {
            return false;
        }
        $text = $value;
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv);
        return trim($this->safe_b64encode($crypttext));
    }
    public function decode($value) {
        if (!$value) {
            return false;
        }
        $crypttext = $this->safe_b64decode($value);
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv);
        return trim($decrypttext);
    }
}
PHP 相关文章推荐
PHP.MVC的模板标签系统(三)
Sep 05 PHP
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
非常好的php目录导航文件代码
Oct 09 PHP
PHP has encountered an Access Violation
Jan 15 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
老生常谈PHP数组函数array_merge(必看篇)
May 25 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 PHP
Laravel框架查询构造器 CURD操作示例
Sep 04 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 #PHP
PHP中如何实现常用邮箱的基本判断
Jan 07 #PHP
PHP实现变色验证码实例
Jan 06 #PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 #PHP
用php简单实现加减乘除计算器
Jan 06 #PHP
PHP面向对象之旅:深入理解static变量与方法
Jan 06 #PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 #PHP
You might like
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
php验证码生成器
2017/05/24 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
Python 操作MySQL详解及实例
2017/04/30 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
python实现年会抽奖程序
2019/01/22 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
大学毕业生求职自荐信
2014/02/20 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
中学生思想品德评语
2014/12/31 职场文书
《鲸》教学反思
2016/02/23 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS
python微信智能AI机器人实现多种支付方式
2022/04/12 Python