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 相关文章推荐
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
Oct 29 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
PHP5中Cookie与 Session使用详解
Apr 30 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
ThinkPHP3.1基础知识快速入门
Jun 19 PHP
PHP多线程类及用法实例
Dec 03 PHP
PHP 实现判断用户是否手机访问
Jan 21 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
PHP以json或xml格式返回请求数据的方法
May 31 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 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开发者的10个技巧
2011/02/25 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
php去掉文件前几行的方法
2015/07/29 PHP
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
python实现批量改文件名称的方法
2015/05/25 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
一看就懂得Python的math模块
2018/10/21 Python
对pandas的算术运算和数据对齐实例详解
2018/12/22 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
使用Python在Windows下获取USB PID&amp;VID的方法
2019/07/02 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Python autoescape标签用法解析
2020/01/17 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
python中怎么表示空值
2020/06/19 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
解除劳动合同协议书
2014/04/14 职场文书
环保证明
2015/06/23 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python