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部分常见问题总结
Oct 09 PHP
深入了解php4(2)--重访过去
Oct 09 PHP
模仿OSO的论坛(三)
Oct 09 PHP
PHP 全角转半角实现代码
May 16 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
php递归遍历多维数组的方法
Apr 18 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
Ajax+PHP实现的删除数据功能示例
Feb 12 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
php 中的信号处理操作实例详解
Mar 04 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数学运算
2011/12/30 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
[原创]图片分页查看
2006/08/28 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
python控制台英汉汉英电子词典
2020/04/23 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
python实现树形打印目录结构
2018/03/29 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
Python如何读写二进制数组数据
2020/08/01 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
培训专员岗位职责
2014/02/26 职场文书
个人银行贷款担保书
2014/04/01 职场文书
节能标语大全
2014/06/21 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书