php中AES加密解密的例子小结


在PHP中,AES加密和解密是一个常见的需求,用于保护数据的机密性。以下是一个使用PHP内置函数`openssl_encrypt`和`openssl_decrypt`进行AES加密和解密的简单例子。这里假设我们使用AES-256-CBC模式,这是AES算法中较为常用的一种模式。

### AES加密


<?php
$data = "Hello, World!"; // 待加密的数据
$key = openssl_random_pseudo_bytes(32); // 生成一个32字节(即256位)的密钥
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc')); // 生成一个初始化向量

// 加密
$encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv);
$encrypted = base64_encode($encrypted); // 通常我们会将加密后的二进制数据编码为Base64字符串,以便于存储和传输

echo "Encrypted: " . $encrypted . "\n";

// 注意:在实际应用中,你需要安全地存储密钥和IV,以便进行解密
?>

### AES解密


<?php
// 假设你已经有了加密后的数据、密钥和IV
$encrypted = "这里是之前加密并编码后的Base64字符串";
$key = "这里是之前生成的密钥";
$iv = "这里是之前生成的IV";

// 解码Base64字符串
$encrypted = base64_decode($encrypted);

// 解密
$decrypted = openssl_decrypt($encrypted, 'aes-256-cbc', $key, 0, $iv);

echo "Decrypted: " . $decrypted . "\n";
?>

请注意,为了示例的简洁性,上面的代码片段并没有包括错误处理。在实际应用中,你应该检查`openssl_encrypt`和`openssl_decrypt`函数的返回值,以确保加密和解密操作成功执行。如果函数返回`false`,你可以通过调用`openssl_error_string()`来获取错误信息。

此外,密钥(`$key`)和初始化向量(`$iv`)在实际应用中应该是保密的,并且应该安全地存储和传递。上面的示例中使用了`openssl_random_pseudo_bytes`函数来生成它们,但在实际应用中,你可能需要从安全存储中检索它们。