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 相关文章推荐
加速XP搜索功能堪比vista
Mar 22 PHP
表单复选框向PHP传输数据的代码
Nov 13 PHP
php 防止单引号,双引号在接受页面转义
Jul 10 PHP
一个PHP数组应该有多大的分析
Jul 30 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 PHP
浅析php单例模式
Nov 25 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
php使用parse_str实现查询字符串解析到变量中的方法
Feb 17 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP实现的折半查找算法示例
Dec 19 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
MySQL修改密码方法总结
2008/03/25 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
python plotly绘制直方图实例详解
2019/07/22 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
大学生求职自荐信
2013/12/12 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
重阳节标语大全
2014/10/07 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
信访维稳工作汇报
2014/10/27 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
python 调用js的四种方式
2021/04/11 Python
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android