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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
拼音码表的生成
Oct 09 PHP
在线短消息收发的程序,不用数据库
Oct 09 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
关于尾递归的使用详解
May 02 PHP
深入php socket的讲解与实例分析
Jun 13 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 PHP
WordPress自定义时间显示格式
Mar 27 PHP
smarty简单应用实例
Nov 03 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
Yii2.0预定义的别名功能小结
Jul 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中ADODB类详解
2008/03/25 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
详解Python中for循环是如何工作的
2017/06/30 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
PHP面试题及答案二
2015/05/23 面试题
采购主管工作职责
2013/12/12 职场文书
同学会邀请书大全
2014/01/12 职场文书
心理健康日活动总结
2014/05/08 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
武当山导游词
2015/02/03 职场文书
陕西导游词
2015/02/04 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
参加招聘会后的感想
2015/08/10 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle