How can PHP developers ensure the integrity of encrypted messages when using OpenSSL for message encryption?

To ensure the integrity of encrypted messages when using OpenSSL for message encryption, PHP developers should use authenticated encryption modes like AES GCM. This mode not only encrypts the message but also provides authentication to ensure its integrity. By using authenticated encryption, developers can prevent tampering or unauthorized modifications to the encrypted data.

// Encrypt and authenticate a message using AES GCM
$key = random_bytes(16); // Generate a random key
$iv = random_bytes(12); // Generate a random initialization vector

$message = "Hello, World!";
$tag = '';
$ciphertext = openssl_encrypt($message, 'aes-128-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag);

// Decrypt and verify the integrity of the message
$decrypted = openssl_decrypt($ciphertext, 'aes-128-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag);

if ($decrypted === false) {
    die('Failed to decrypt the message or the message has been tampered with.');
}

echo $decrypted;