php实现aes加密
PHP实现AES加密的方法
AES(Advanced Encryption Standard)是一种常用的对称加密算法。在PHP中,可以通过openssl_encrypt和openssl_decrypt函数实现AES加密和解密。
加密函数示例
以下是一个使用AES-256-CBC模式加密的PHP函数示例:

function encryptAES($data, $key, $iv) {
$cipher = "aes-256-cbc";
$options = OPENSSL_RAW_DATA;
$encrypted = openssl_encrypt($data, $cipher, $key, $options, $iv);
return base64_encode($encrypted);
}
解密函数示例
对应的解密函数如下:
function decryptAES($encryptedData, $key, $iv) {
$cipher = "aes-256-cbc";
$options = OPENSSL_RAW_DATA;
$decrypted = openssl_decrypt(base64_decode($encryptedData), $cipher, $key, $options, $iv);
return $decrypted;
}
使用方法
$key = "thisisasecretkey1234567890123456"; // 32字节密钥
$iv = "thisisanivvector12"; // 16字节IV向量
$data = "Hello, World!";
$encrypted = encryptAES($data, $key, $iv);
echo "Encrypted: " . $encrypted . "\n";
$decrypted = decryptAES($encrypted, $key, $iv);
echo "Decrypted: " . $decrypted . "\n";
注意事项
密钥长度必须与所选算法匹配:

- AES-128-CBC需要16字节密钥
- AES-192-CBC需要24字节密钥
- AES-256-CBC需要32字节密钥
IV向量必须是16字节长度,且应该为每个加密操作生成唯一的IV。在实际应用中,IV可以随机生成并与加密数据一起存储:
$iv = openssl_random_pseudo_bytes(16);
安全建议
为了提高安全性,建议:
- 使用强随机数生成器创建密钥和IV
- 定期轮换加密密钥
- 使用HMAC验证密文的完整性
- 考虑使用PHP 7.2+的现代加密函数如
sodium_crypto_secretbox






