php 实现aes
PHP 实现 AES 加密解密
PHP 提供了 OpenSSL 扩展来实现 AES 加密解密功能。AES(Advanced Encryption Standard)是一种对称加密算法,支持 128、192 和 256 位密钥长度。
加密方法
function encryptAES($data, $key, $iv) {
$method = 'aes-256-cbc';
$encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($encrypted);
}
$data:需要加密的明文数据$key:加密密钥,必须是 32 字节长度(256 位)$iv:初始化向量,必须是 16 字节长度(128 位)aes-256-cbc指定使用 AES-256 算法和 CBC 模式
解密方法
function decryptAES($encryptedData, $key, $iv) {
$method = 'aes-256-cbc';
$decrypted = openssl_decrypt(base64_decode($encryptedData), $method, $key, OPENSSL_RAW_DATA, $iv);
return $decrypted;
}
$encryptedData:base64 编码的加密数据- 其他参数与加密方法相同
使用示例
$key = 'thisisasecretkeywith32byteslength'; // 32 字节密钥
$iv = 'thisisanivbytes'; // 16 字节 IV
$data = 'Sensitive data to encrypt';
// 加密
$encrypted = encryptAES($data, $key, $iv);
echo "Encrypted: " . $encrypted . "\n";
// 解密
$decrypted = decryptAES($encrypted, $key, $iv);
echo "Decrypted: " . $decrypted . "\n";
注意事项
- 密钥和 IV 应该安全存储,不要硬编码在代码中
- 对于生产环境,考虑使用密钥管理系统
- 每次加密应该使用不同的 IV(初始化向量)
- 确保 PHP 已安装 OpenSSL 扩展
其他加密模式
除了 CBC 模式,还可以使用其他模式如 GCM(提供认证加密):

function encryptAESGCM($data, $key) {
$method = 'aes-256-gcm';
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
$tag = '';
$encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv, $tag);
return base64_encode($iv.$tag.$encrypted);
}
GCM 模式提供了加密和认证功能,适合需要更高安全性的场景。






