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 相关文章推荐
global.php
Dec 09 PHP
php 数学运算验证码实现代码
Oct 11 PHP
PHP中将网页导出为Word文档的代码
May 25 PHP
一组PHP可逆加密解密算法实例代码
Jan 21 PHP
PHP调用VC编写的COM组件实例
Mar 29 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
php中JSON的使用与转换
Jan 14 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
laravel-admin 实现在指定的相册下添加照片
Oct 21 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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通过strpos查找字符串出现位置的方法
2015/03/17 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
使用python实现省市三级菜单效果
2016/01/20 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
大学生职业生涯规划范文
2014/01/08 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
重阳节活动总结
2014/08/27 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
财产分割协议书范本
2014/11/03 职场文书
2014年教研室工作总结
2014/12/06 职场文书
文明单位申报材料
2014/12/23 职场文书
活动新闻稿范文
2015/07/17 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
Vue和Flask通信的实现
2021/05/19 Vue.js
python正则表达式re.search()的基本使用教程
2021/05/21 Python