php的一个简单加密解密代码


当然,下面是一个简单的PHP加密和解密代码示例,使用了PHP内置的`openssl_encrypt`和`openssl_decrypt`函数。这里我们使用AES-256-CBC作为加密算法。注意,为了加密解密能够成功,你需要保证加密时使用的密钥(key)和初始化向量(iv)在解密时也是可用的。


<?php

// 加密函数
function encrypt($data, $key) {
    // 生成一个随机的初始化向量
    $ivLength = openssl_cipher_iv_length('aes-256-cbc');
    $iv = openssl_random_pseudo_bytes($ivLength);

    // 加密数据
    $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv);

    // 返回初始化向量和加密后的数据,实际使用时你可能需要将它们分开存储或传输
    return base64_encode($iv . $encrypted);
}

// 解密函数
function decrypt($data, $key) {
    // 解码接收到的数据
    $data = base64_decode($data);

    // 提取初始化向量
    $ivLength = openssl_cipher_iv_length('aes-256-cbc');
    $iv = substr($data, 0, $ivLength);

    // 提取加密后的数据
    $encrypted = substr($data, $ivLength);

    // 解密数据
    return openssl_decrypt($encrypted, 'aes-256-cbc', $key, 0, $iv);
}

// 示例使用
$key = 'your-secret-key-here'; // 密钥需要足够复杂且保密
$originalData = 'Hello, world!';

// 加密
$encryptedData = encrypt($originalData, $key);
echo "Encrypted: " . $encryptedData . "\n";

// 解密
$decryptedData = decrypt($encryptedData, $key);
echo "Decrypted: " . $decryptedData . "\n";

?>

注意:在实际应用中,密钥(`$key`)和初始化向量(`$iv`)的管理非常重要。密钥应该保密,并且对于不同的数据或用户,可能需要不同的密钥。初始化向量不需要保密,但它必须是唯一的,以避免潜在的安全风险。在这个示例中,为了简化,我将初始化向量和加密后的数据一起返回了,但在实际应用中,你可能需要将它们分开存储或传输。