【PHP AES加解密示例】从入门到精通,一篇文章让你掌握加密解密技术!

发布时间:2024年01月13日
一、引言

随着互联网的普及,数据安全问题越来越受到人们的关注。在众多加密算法中,AES(Advanced Encryption Standard)因其高效、安全的特点被广泛应用。本文将通过PHP语言,为大家展示一个简单的AES加解密示例,帮助你快速掌握加密解密技术。

二、准备工作

在进行AES加解密之前,你需要确保你的PHP环境已经安装了openssl扩展。你可以通过在终端中输入以下命令来检查:

php -m | grep openssl

如果输出了"openssl",则说明你的PHP环境已经安装了openssl扩展。

三、PHP AES加解密示例
加密

首先,我们需要使用AES算法对数据进行加密。以下是一个简单的加密示例:

<?php
function encryptData($data, $key) {
    $iv = openssl_random_pseudo_bytes(16); // 生成随机初始化向量
    $encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv); // 加密数据
    $mac = hash_hmac('sha256', $encrypted, $key, true); // 计算消息认证码
    $encoded = base64_encode($iv . $mac . $encrypted); // 对初始化向量、消息认证码和加密数据进行编码
    return $encoded;
}

$key = 'your-secret-key'; // 替换为你自己的密钥
$data = 'Hello, world!'; // 需要加密的数据
$encryptedData = encryptData($data, $key);
echo '加密后的数据:' . $encryptedData;
?>
解密

接下来,我们需要对加密后的数据进行解密。以下是一个简单的解密示例:

<?php
function decryptData($encryptedData, $key) {
    $decoded = base64_decode($encryptedData); // 对编码的加密数据进行解码
    $iv = substr($decoded, 0, 16); // 提取初始化向量
    $mac = substr($decoded, 16, 32); // 提取消息认证码
    $encrypted = substr($decoded, 48); // 提取加密数据
    $decrypted = openssl_decrypt($encrypted, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv); // 解密数据
    $calculatedMac = hash_hmac('sha256', $encrypted, $key, true); // 重新计算消息认证码
    if (hash_equals($mac, $calculatedMac)) { // 比较消息认证码是否一致
        return $decrypted; // 如果一致,返回解密后的数据
    } else {
        return false; // 如果不一致,返回false表示解密失败
    }
}

$key = 'your-secret-key'; // 替换为你自己的密钥
$encryptedData = '加密后的数据'; // 替换为你要解密的数据
$decryptedData = decryptData($encryptedData, $key);
if ($decryptedData !== false) {
    echo '解密后的数据:' . $decryptedData;
} else {
    echo '解密失败!';
}
?>

文章来源:https://blog.csdn.net/weixin_38283545/article/details/135569647
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。