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生成静态页
Nov 25 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
PR值查询 | PageRank 查询
Dec 20 PHP
php cache类代码(php数据缓存类)
Apr 15 PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
详细解读PHP中接口的应用
Aug 12 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
laravel请求参数校验方法
Oct 10 PHP
PHP7 参数处理机制修改
Mar 09 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
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
基于递归实现的php树形菜单代码
2014/11/19 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
Javascript - HTML的request类
2007/01/09 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
javascript基础知识
2016/06/07 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
node.js express中app.param的用法详解
2017/07/16 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
Python多线程编程简单介绍
2015/04/13 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python requests使用socks5的例子
2019/07/25 Python
opencv+python实现均值滤波
2020/02/19 Python
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
《画风》教学反思
2014/04/16 职场文书
初三学习计划书范文
2014/04/30 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
会议主持词结束语
2015/07/03 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
新手初学Java网络编程
2021/07/07 Java/Android