使用PHP进行AES加解密的示例代码:

以下是一个使用PHP进行AES加解密的示例代码:

php复制代码
// 加密函数
function encryptAES($data, $key) {
$iv = random_bytes(16); // 生成随机初始化向量
$encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
$mac = hash_hmac('sha256', $encrypted, $key, true); // 计算消息认证码
$result = base64_encode($iv . $mac . $encrypted); // 将初始化向量、消息认证码和密文拼接并编码为Base64字符串
return $result;
}
// 解密函数
function decryptAES($data, $key) {
$data = base64_decode($data); // 解码Base64字符串为二进制数据
$iv = substr($data, 0, 16); // 获取初始化向量
$mac = substr($data, 16, 32); // 获取消息认证码
$encrypted = substr($data, 48); // 获取密文
$calculatedMac = hash_hmac('sha256', $encrypted, $key, true); // 计算原始消息认证码和计算的消息认证码进行比较
if (!hash_equals($mac, $calculatedMac)) {
return false; // 如果认证码不匹配,返回false表示解密失败
}
$decrypted = openssl_decrypt($encrypted, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
return $decrypted;
}
// 示例用法
$key = 'your-secret-key'; // 替换为你的密钥
$data = 'Hello, World!'; // 要加密的数据
$encryptedData = encryptAES($data, $key);
echo "加密后的数据: " . $encryptedData . "\n";
$decryptedData = decryptAES($encryptedData, $key);
echo "解密后的数据: " . $decryptedData . "\n";

请注意,这只是一个简单的示例,用于说明如何使用PHP进行AES加解密。在实际应用中,你可能需要考虑更多的安全性和错误处理机制。此外,密钥的生成和管理也非常重要,确保密钥的安全性和保密性是实现安全加密的关键。

你可能感兴趣的:(php)