aes php实现
AES 加密在 PHP 中的实现
PHP 提供了内置函数 openssl_encrypt 和 openssl_decrypt 来支持 AES 加密。以下是具体实现方法:
加密方法
$plaintext = "需要加密的数据";
$key = "16字节或32字节密钥"; // AES-128 需 16 字节,AES-256 需 32 字节
$iv = openssl_random_pseudo_bytes(16); // 初始化向量
$ciphertext = openssl_encrypt(
$plaintext,
'AES-256-CBC', // 算法模式
$key,
OPENSSL_RAW_DATA,
$iv
);
$encrypted = base64_encode($iv . $ciphertext);
解密方法
$encrypted = "base64编码的加密数据";
$data = base64_decode($encrypted);
$iv = substr($data, 0, 16);
$ciphertext = substr($data, 16);
$plaintext = openssl_decrypt(
$ciphertext,
'AES-256-CBC',
$key,
OPENSSL_RAW_DATA,
$iv
);
密钥生成方法
安全密钥应通过密码学安全方式生成:
$key = openssl_random_pseudo_bytes(32); // 生成 32 字节随机密钥
$keyHex = bin2hex($key); // 转换为十六进制字符串
注意事项
加密模式推荐使用 CBC 或 GCM 模式。ECB 模式不安全,应避免使用。
IV(初始化向量)必须随机且每次加密都不同,长度应与块大小一致(AES 为 16 字节)。
密钥长度决定加密强度:AES-128 使用 16 字节密钥,AES-256 使用 32 字节密钥。

加密后的数据通常需要 base64 编码以便存储或传输。






