当然,下面是一个简单的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`)的管理非常重要。密钥应该保密,并且对于不同的数据或用户,可能需要不同的密钥。初始化向量不需要保密,但它必须是唯一的,以避免潜在的安全风险。在这个示例中,为了简化,我将初始化向量和加密后的数据一起返回了,但在实际应用中,你可能需要将它们分开存储或传输。