在使用 PHP 的 OpenSSL 扩展进行 AES 加密时,为了确保加密结果的一致性,你需要遵循以下几个步骤:
$key = 'your-secret-key'; // 长度必须为 32 个字符
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc')); // 生成一个随机的 IV
$padding = openssl_cipher_iv_length('aes-256-cbc');
function encryptAes($plaintext, $key, $iv, $padding) {
$ciphertext = openssl_encrypt($plaintext, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($ciphertext . '::' . $padding);
}
function decryptAes($ciphertext, $key, $iv, $padding) {
$parts = explode('::', base64_decode($ciphertext));
$ciphertext = $parts[0];
$padding = $parts[1];
return openssl_decrypt($ciphertext, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
}
$plaintext = 'Hello, world!';
$encrypted = encryptAes($plaintext, $key, $iv, $padding);
$decrypted = decryptAes($encrypted, $key, $iv, $padding);
echo 'Encrypted: ' . $encrypted . PHP_EOL;
echo 'Decrypted: ' . $decrypted . PHP_EOL;
遵循以上步骤,可以确保在使用 PHP 的 OpenSSL 扩展进行 AES 加密时,加密结果的一致性。