php加密解密实用类分享



<?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`是安全存储的,并且只有授权的用户才能访问。