php 加密和解密 案例
以下是一个使用 PHP 进行加密和解密的简单案例:
```php
<?php
// 加密函数
function encrypt($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); // 计算消息认证码
    $encoded = base64_encode($iv . $mac . $encrypted); // 将初始化向量、消息认证码和密文拼接并编码为字符串
    return $encoded;
}
// 解密函数
function decrypt($data, $key) {
    $data = base64_decode($data);
    $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; // 消息认证码验证失败,解密失败
    }
    $decrypted = openssl_decrypt($encrypted, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
    return $decrypted;
}
// 示例用法
$key = 'my-secret-key'; // 密钥,确保长度至少为16个字符(AES-256)
$data = 'Hello, World!'; // 要加密的数据
// 加密数据
$encryptedData = encrypt($data, $key);
echo "加密后的数据: " . $encryptedData . "\n";字符串函数php
// 解密数据
$decryptedData = decrypt($encryptedData, $key);
echo "解密后的数据: " . $decryptedData . "\n";
>
```
在上述示例中,我们使用了AES-256-CBC加密算法进行数据的加密和解密。首先,我们定义了`encrypt`函数用于加密数据,它接受要加密的数据和密钥作为参数,并返回加密后的字符串。该函数使用`openssl_encrypt`函数进行加密,并使用`hash_hmac`函数计算消息认证码。然后,我们定义了`decrypt`函数用于解密数据,它接受加密后的数据和密钥作为参数,并返回解密后的原始数据。该函数首先对数据进行解码,然后提取初始化向量和消息认证码,并计算实际的消息认证码。如果消息认证码验证失败,则解密失败。最后,我们使用示例密钥和数据进行加密和解密的演示。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。