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通过header实现文本文件下载的代码
Aug 08 PHP
PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
Feb 14 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
PHP自带函数给数字或字符串自动补齐位数
Jul 29 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
php中socket通信机制实例详解
Jan 03 PHP
php数组生成html下拉列表的方法
Jul 20 PHP
PHP中COOKIES使用示例
Jul 26 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 PHP
php正则表达式使用方法整理集合
Jan 31 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
JAVA/JSP学习系列之二
2006/10/09 PHP
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
php类
2006/11/27 PHP
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
php中对2个数组相加的函数
2011/06/24 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
js表数据排序 sort table data
2009/02/18 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
python中Flask框架简单入门实例
2015/03/21 Python
python实现给数组按片赋值的方法
2015/07/28 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
Python 对象中的数据类型
2017/05/13 Python
python名片管理系统开发
2020/06/18 Python
python安装sklearn模块的方法详解
2020/11/28 Python
企业管理培训感言
2014/01/27 职场文书
优秀语文教师事迹
2014/05/18 职场文书
社团活动总结格式
2014/08/29 职场文书
员工试用期自我评价
2014/09/18 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
售票员岗位职责
2015/02/15 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
走进毛泽东观后感
2015/06/04 职场文书
2019个人半年工作总结
2019/06/21 职场文书
浅谈node.js中间件有哪些类型
2021/04/29 Javascript
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏
Python时间操作之pytz模块使用详解
2022/06/14 Python