What are the best practices for encrypting and decrypting data in PHP?

When encrypting and decrypting data in PHP, it is important to use secure encryption algorithms and proper key management practices to ensure the confidentiality and integrity of the data. One common approach is to use the OpenSSL extension in PHP to encrypt data with a strong algorithm like AES and securely store the encryption key.

// Encrypt data
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);
}

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

// Usage
$key = 'your_secret_key';
$data = 'Sensitive data to encrypt';
$encryptedData = encryptData($data, $key);
$decryptedData = decryptData($encryptedData, $key);

echo $decryptedData;