php实现aes加密
PHP 实现 AES 加密
PHP 提供了 openssl_encrypt 和 openssl_decrypt 函数来实现 AES 加密和解密。AES(高级加密标准)是一种对称加密算法,支持 128、192 和 256 位密钥长度。
加密示例代码
以下是一个完整的 AES-256-CBC 加密示例:
$plaintext = "需要加密的数据";
$key = "0123456789abcdef0123456789abcdef"; // 32字节密钥(AES-256)
$iv = openssl_random_pseudo_bytes(16); // 初始化向量
$ciphertext = openssl_encrypt(
$plaintext,
'AES-256-CBC',
$key,
OPENSSL_RAW_DATA,
$iv
);
$result = base64_encode($iv.$ciphertext);
echo "加密结果: ".$result;
解密示例代码
$encrypted = base64_decode($result);
$iv = substr($encrypted, 0, 16);
$ciphertext = substr($encrypted, 16);
$plaintext = openssl_decrypt(
$ciphertext,
'AES-256-CBC',
$key,
OPENSSL_RAW_DATA,
$iv
);
echo "解密结果: ".$plaintext;
注意事项
- 密钥长度必须与所选算法匹配:AES-128 需要 16 字节,AES-192 需要 24 字节,AES-256 需要 32 字节
- 初始化向量(IV)应该是随机且唯一的,每次加密都应生成新的 IV
- 存储加密数据时,通常需要同时存储 IV(无需保密)
- 考虑使用 HMAC 进行数据完整性验证
其他可用模式
除了 CBC 模式,PHP 还支持:
- AES-128/192/256-ECB(不推荐,安全性较低)
- AES-128/192/256-CTR
- AES-128/192/256-GCM(推荐,提供认证加密)







