在PHP中,你可以使用openssl
扩展来进行AES加密和解密。以下是一个简单的示例代码,演示如何使用AES算法进行加密和解密。
AES加密和解密示例
<?php
function encrypt($plaintext, $key, $iv) {
return openssl_encrypt($plaintext, 'AES-256-CBC', $key, 0, $iv);
}
function decrypt($ciphertext, $key, $iv) {
return openssl_decrypt($ciphertext, 'AES-256-CBC', $key, 0, $iv);
}
$key = 'your-secret-key-here'; // 32字节的密钥,适用于AES-256
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-256-CBC')); // 16字节的初始化向量
$plaintext = 'This is a secret message';
// 加密
$ciphertext = encrypt($plaintext, $key, $iv);
echo "加密后的文本: " . base64_encode($ciphertext) . "\n";
// 解密
$decrypted_text = decrypt($ciphertext, $key, $iv);
echo "解密后的文本: " . $decrypted_text . "\n";
?>
说明:
-
openssl_encrypt
:用于加密数据。需要提供要加密的明文、加密算法(如AES-256-CBC
)、密钥以及初始化向量(IV)。 -
openssl_decrypt
:用于解密数据。需要提供加密后的密文、加密算法、密钥以及初始化向量。 -
密钥 (
$key
):确保密钥的长度与所选算法匹配。例如,AES-256需要一个32字节的密钥。 -
初始化向量 (
$iv
):对于CBC模式,IV是必须的,确保它是随机生成的,并且在加密和解密时使用相同的IV。
注意事项:
- 密钥和IV的管理非常重要,不同的密钥或IV将导致无法正确解密。
base64_encode
和base64_decode
可以用于在网络传输或存储时对密文进行编码和解码- aqikaiqjzoidiwhankaoiehIJsjqiakqoMcN2JweszSIuuxKP2WtdJTAReF6ap42EYvBtJFLUrow7GQrfUuRB4y1KInaa498723duaiuwhiWsu/qrvjJWV6MC54alc+bU6ne5ZPsYg==nklzjhiuWLKJkHWLKJZSJWJAZlOJFUAOIQAMDIENM==