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 相关文章推荐
域名查询代码公布
Oct 09 PHP
PHP防注入安全代码
Apr 09 PHP
php set_magic_quotes_runtime() 函数过时解决方法
Jul 08 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
php设计模式 Facade(外观模式)
Jun 26 PHP
thinkphp的c方法使用示例
Feb 24 PHP
php实现文件编码批量转换
Mar 10 PHP
php表单提交实例讲解
Nov 12 PHP
php arsort 数组降序排序详细介绍
Nov 17 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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/01/02 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
javascript实现二分查找法实现代码
2007/11/12 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
详解VUE 数组更新
2017/12/16 Javascript
node.js基础知识小结
2018/02/26 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
easy_install python包安装管理工具介绍
2013/02/10 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
咨询公司各岗位职责
2013/12/02 职场文书
班级文化标语
2014/06/23 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
PyTorch中permute的使用方法
2022/04/26 Python