php实现aes
AES 加密在 PHP 中的实现
PHP 内置了 OpenSSL 扩展,支持 AES 加密。以下是 AES-256-CBC 模式的实现示例:
加密函数
function encryptAES($data, $key, $iv) {
$cipherText = openssl_encrypt(
$data,
'AES-256-CBC',
$key,
OPENSSL_RAW_DATA,
$iv
);
return base64_encode($cipherText);
}
解密函数
function decryptAES($encryptedData, $key, $iv) {
$decrypted = openssl_decrypt(
base64_decode($encryptedData),
'AES-256-CBC',
$key,
OPENSSL_RAW_DATA,
$iv
);
return $decrypted;
}
密钥和 IV 生成
AES-256 需要 32 字节密钥和 16 字节 IV:
$key = openssl_random_pseudo_bytes(32);
$iv = openssl_random_pseudo_bytes(16);
使用示例
$plaintext = "Secret message";
$key = "your-32-byte-encryption-key-here"; // 必须 32 字节
$iv = "16-byte-IV-here"; // 必须 16 字节
$encrypted = encryptAES($plaintext, $key, $iv);
$decrypted = decryptAES($encrypted, $key, $iv);
安全注意事项
密钥应安全存储,避免硬编码在代码中。IV 每次加密都应不同,建议使用 random_bytes() 生成。
对于需要存储加密数据的情况,建议将 IV 与密文一起存储:
$fullCipher = base64_encode($iv).'|'.base64_encode($cipherText);
解密时拆分 IV 和密文:

list($iv, $cipherText) = explode('|', $fullCipher);
$iv = base64_decode($iv);
$cipherText = base64_decode($cipherText);






