<?php
class CryptoUtil {
// 加密方法,使用base64和openssl进行加密
public static function encrypt($data, $secretKey) {
$ivLength = openssl_cipher_iv_length('aes-256-cbc');
$iv = openssl_random_pseudo_bytes($ivLength);
$encrypted = openssl_encrypt($data, 'aes-256-cbc', $secretKey, 0, $iv);
// 将IV附加到加密的字符串中,以便解密时使用
return base64_encode($iv . $encrypted);
}
// 解密方法,与加密方法相对应
public static function decrypt($data, $secretKey) {
$data = base64_decode($data);
$ivLength = openssl_cipher_iv_length('aes-256-cbc');
$iv = substr($data, 0, $ivLength);
$encryptedData = substr($data, $ivLength);
return openssl_decrypt($encryptedData, 'aes-256-cbc', $secretKey, 0, $iv);
}
}
// 使用示例
$secretKey = 'your-secret-key-here'; // 请确保密钥安全
$originalData = 'Hello, World!';
$encryptedData = CryptoUtil::encrypt($originalData, $secretKey);
echo "Encrypted: " . $encryptedData . "\n";
$decryptedData = CryptoUtil::decrypt($encryptedData, $secretKey);
echo "Decrypted: " . $decryptedData . "\n";
?>
这段代码提供了一个简单的PHP加密解密实用类`CryptoUtil`,使用了OpenSSL的AES-256-CBC算法和base64编码进行数据的加密和解密。加密时,会生成一个随机的初始化向量(IV)并将其附加到加密后的数据中,以便解密时使用。注意,为了安全起见,请确保您的密钥`$secretKey`是安全存储的,并且只有授权的用户才能访问。