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 相关文章推荐
在Windows版的PHP中使用ADO
Oct 09 PHP
PHP中用header图片地址 简单隐藏图片源地址
Apr 09 PHP
shopex中集成的站长统计功能的代码简单分析
Aug 11 PHP
php银联网页支付实现方法
Mar 04 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
Oct 15 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 PHP
php中钩子(hook)的原理与简单应用demo示例
Sep 03 PHP
详解Laravel框架的依赖注入功能
May 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 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
Views rows style模板重写代码
2011/05/16 PHP
PHP中soap的用法实例
2014/10/24 PHP
php之可变函数的实例详解
2017/09/13 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
脚本收藏iframe
2006/07/21 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
iView框架问题整理小结
2018/10/16 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
初中优秀教师事迹材料
2014/08/18 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
销售助理岗位职责
2015/02/11 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
2015年话务员工作总结
2015/04/29 职场文书
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers