AES是目前最常用的对称加密算法,其应用范围非常广泛,如数据安全传输、文件加密等。PHP作为一种常用的语言,在实现AES加密、解密时也提供了很好的支持。
PHP实现的AES加密、解密封装类与用法示例
简介
AES是目前最常用的对称加密算法,其应用范围非常广泛,如数据安全传输、文件加密等。PHP作为一种常用的语言,在实现AES加密、解密时也提供了很好的支持。
本文将介绍如何使用PHP实现AES加解密,并封装成简便的类文件。同时,本文会提供两个用例,让读者更好地了解如何使用该功能库。
实现AES加密、解密
PHP中提供了openssl扩展,可用于实现AES加解密。下面分别介绍加密和解密的过程:
AES加密
/**
* 对数据进行AES加密
* @param string $data 需要加密的数据
* @param string $key 密钥
* @param string $iv 向量
* @return string
*/
function aesEncrypt($data, $key, $iv)
{
$data = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($data);
}
上述代码实现了AES加密过程。在这里,使用openssl_encrypt()函数实现加密功能,该函数的前四个参数分别为加密算法、key、数据、flags。其中,padding和向量都是可以通过flag选项提供的。
AES解密
/**
* 对数据进行AES解密
* @param string $data 需要解密的数据
* @param string $key 密钥
* @param string $iv 向量
* @return string
*/
function aesDecrypt($data, $key, $iv)
{
$data = base64_decode($data);
return openssl_decrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
}
上述代码实现了AES解密过程。与加密类似,使用openssl_decrypt()函数实现解密,同样也可以指定padding和向量等参数。
封装成类文件
有了上面的加解密过程,我将其封装成了类文件Aes.php,方便实际开发过程中直接调用。
class Aes
{
/**
* 加密
* @param string $data 需要加密的数据
* @param string $key 密钥
* @param string $iv 向量
* @return string
*/
public static function aesEncrypt($data, $key, $iv)
{
$data = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($data);
}
/**
* 解密
* @param string $data 需要解密的数据
* @param string $key 密钥
* @param string $iv 向量
* @return string
*/
public static function aesDecrypt($data, $key, $iv)
{
$data = base64_decode($data);
return openssl_decrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
}
}
用例
用法示例一
加密数据:hello world
密钥:myaeskey12345
向量:1234567890123456
$data = "hello world";
$key = "myaeskey12345";
$iv = "1234567890123456";
$encryptData = Aes::aesEncrypt($data, $key, $iv); // 加密后数据
$decryptData = Aes::aesDecrypt($encryptData, $key, $iv); // 解密后数据
用法示例二
加密数据:{"name":"user1","age":18}
密钥:myaeskey67890
向量:9876543210987654
$data = '{"name":"user1","age":18}';
$key = "myaeskey67890";
$iv = "9876543210987654";
$encryptData = Aes::aesEncrypt($data, $key, $iv); // 加密后数据
$decryptData = Aes::aesDecrypt($encryptData, $key, $iv); // 解密后数据
在这里,用例一和用例二分别展示了如何应用于加密数据和解密数据中,并指定密钥和向量。
本文标题为:PHP实现的AES加密、解密封装类与用法示例
基础教程推荐
- WordPress免插件实现面包屑导航的示例代码 2023-04-25
- PHP的preg_match匹配字符串长度问题解决方法 2023-12-24
- Yii 使用intervention/image拓展实现图像处理功能 2023-01-25
- ThinkPHP框架中使用Memcached缓存数据的方法 2022-10-12
- YII2框架中自定义用户认证模型,完成登陆和注册操作示例 2023-04-02
- Laravel + Elasticsearch 实现中文搜索的方法 2023-03-19
- array_multisort实现PHP多维数组排序示例讲解 2023-12-25
- PHP封装的数据库模型Model类完整示例【基于PDO】 2022-12-30
- PHP实现一个二维码同时支持支付宝和微信支付的示例 2023-05-09
- PHP生成短网址的思路以及实现方法的详解 2023-01-04
