在使用 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 加密時,加密結果的一致性。