What are some potential pitfalls when using mcrypt for encryption and decryption in PHP?

One potential pitfall when using mcrypt for encryption and decryption in PHP is that the mcrypt extension has been deprecated since PHP 7.1 and removed in PHP 7.2. It is recommended to use the OpenSSL extension instead, which is actively maintained and more secure.

// Using OpenSSL for encryption and decryption
function encryptData($data, $key) {
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv);
    return base64_encode($iv . $encrypted);
}

function decryptData($data, $key) {
    $data = base64_decode($data);
    $ivLength = openssl_cipher_iv_length('aes-256-cbc');
    $iv = substr($data, 0, $ivLength);
    $encrypted = substr($data, $ivLength);
    return openssl_decrypt($encrypted, 'aes-256-cbc', $key, 0, $iv);
}

// Example usage
$key = 'secret_key';
$data = 'Hello, world!';
$encryptedData = encryptData($data, $key);
echo "Encrypted data: $encryptedData\n";
$decryptedData = decryptData($encryptedData, $key);
echo "Decrypted data: $decryptedData\n";