本文实例讲述了PHP实现的简单对称加密与解密方法。分享给大家供大家参考,具体如下: 方法一:YII自带的加密方法 /** * 加密 * @var string [要加密的值] */ $secretKey = "wwj"; $data = $res['u_id']; $encryptedData = Yii::$app->getSecurity()->encryptByPassword($data, $secretKey); /** * 解密 * @var [type] [加密前的值] */ $aid = $req->get('uid'); $secretKey = "wwj"; $uid 在PHP编程中,对称加密和解密是常见的数据安全处理技术,主要用于保护敏感信息,如用户密码、个人信息等。本文将重点介绍四个简单的PHP实现对称加密与解密的方法,帮助开发者理解并应用到实际项目中。 1. **YII框架自带的加密方法** YII框架提供了内置的安全组件(`yii\base\Security`),可以方便地进行加密和解密操作。例如,要加密数据,可以使用`encryptByPassword`方法,传入要加密的值和一个密钥。解密时,同样用`decryptByPassword`方法,提供加密后的数据和相同的密钥。这种方法适用于YII框架的项目,能够确保数据安全性,且易于集成。 ```php $secretKey = "wwj"; $data = $res['u_id']; $encryptedData = Yii::$app->getSecurity()->encryptByPassword($data, $secretKey); $aid = $req->get('uid'); $uid = Yii::$app->getSecurity()->decryptByPassword($aid, $secretKey); ``` 2. **自定义安全URL编码解码方法** 这种方法使用了PHP的`base64_encode`和`base64_decode`函数,配合`serialize`和`unserialize`来序列化和反序列化数据。`encode`函数将数据编码为安全的URL格式,而`decode`函数则负责解码。这种方法适用于需要在URL中传输加密数据的情况。 ```php function encode($data) { return str_replace(array('+', '/', '='), array('-', '_', ''), base64_encode(serialize($data))); } function decode($string) { $data = str_replace(array('-', '_'), array('+', '/'), $string); $mod4 = strlen($data) % 4; ($mod4) && $data .= substr('====', $mod4); return unserialize(base64_decode($data)); } ``` 3. **使用MCrypt库的AES-256加密** MCrypt库是PHP中一个强大的加密库,这里使用了Rijndael-256算法,这是AES的一种变体。加密和解密都涉及`mcrypt_encrypt`和`mcrypt_decrypt`函数,以及`md5`用于生成密钥。此方法适合对大量数据进行加密,因为它提供了更高级别的安全性。 ```php public static function encrypt($code) { return urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5("key"), $code, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)))); } public static function decrypt($code) { return urldecode(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5("key"), base64_decode($code), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))); } ``` 请注意,MCrypt库在PHP 7.2版本之后已被弃用,因此在新项目中应考虑使用其他加密库,如OpenSSL。 4. **自定义的简单对称加密解密** 这是一种自定义的对称加密解密方法,基于Base64编码,并通过字符串拼接和替换实现。它使用了一个自定义的密钥和字符串替换规则,使加密后的数据看起来更难以解析。这种方法简单易懂,但不如其他方法安全。 ```php function encode($string = '', $skey = 'cxphp') { $strArr = str_split(base64_encode($string)); $strCount = count($strArr); foreach (str_split($skey) as $key => $value) $key < $strCount && $strArr[$key] .= $value; return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr)); } function decode($string = '', $skey = 'cxphp') { $strArr = str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string); $strCount = count(str_split($strArr)); foreach (str_split($skey) as $key => $value) $key < $strCount && $strArr[$key] = substr($strArr[$key], 1); return base64_decode(join('', $strArr)); } ``` 总结来说,对称加密与解密在PHP中可以通过多种方式实现,包括框架提供的功能、自定义编码解码方法以及利用加密库。选择哪种方法取决于项目需求,包括安全性、可维护性以及兼容性等因素。在实际应用中,建议采用被广泛认可的加密库或框架提供的安全组件,以确保数据的安全性。























- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (源码)基于Django框架的图片标签管理网站.zip
- (源码)基于Python的集成学习框架Cuber.zip
- 机器学习相关材料,以及Coursera课程的作业
- 机器学习算法的具体实现路径与实际应用探索
- 牵伴APP连接父母与子女的温情纽带-空巢老人关怀-亲情交流平台-精神赡养解决方案-远程监护系统-Android原生开发-Java编程语言-AndroidStudio开发环境-.zip
- 专注爬虫技术学习:涵盖 JS 逆向、APP 逆向、抓包、验证码等多领域知识收集
- 机器学习算法的实现和应用
- 基于支持向量机 SVM 算法的机器学习股票交易策略研究
- 计算机系统课程设计项目-基于Java的计算机系统全功能模拟器-模拟计算机硬件架构-进程调度算法-内存管理机制-文件系统实现-设备驱动模拟-多线程并发控制-系统调用接口-用户交互界面.zip
- 基于海康威视SDK开发的网络摄像头远程配置管理系统-支持FTP文件传输-定时抓图-计划任务配置-多设备批量操作-RESTful接口-Java后端服务-Swagger文档-Sprin.zip
- 4e1b8-main.zip
- 面向中文用户的机器学习学习资料汇总大全
- 专门面向中文用户的机器学习相关的学习资料大集合
- 基于计算机视觉的相机标定与3D坐标转换系统-提供完整的相机标定流程和2D到3D坐标转换算法-包含RGB相机标定-红外相机标定-图像去畸变-平面直线算法-PnP算法-8点算法-Sta.zip
- 使用 PHP-ML 库进行机器学习的实现方法
- 基于PHP-ML库实现机器学习


