In what scenarios would it be beneficial to use a unique hash key to encrypt and decrypt document IDs in PHP instead of base64_encode?

Using a unique hash key to encrypt and decrypt document IDs in PHP instead of base64_encode can provide an extra layer of security by adding a secret key that only authorized parties know. This can help prevent unauthorized access to sensitive information in the document IDs. Additionally, using a unique hash key can make it more difficult for attackers to decode the encrypted IDs compared to using base64_encode, which is a common encoding method that can be easily decoded.

<?php
// Unique hash key for encryption and decryption
$hash_key = 'my_secret_key';

// Function to encrypt document ID using the hash key
function encryptDocumentID($document_id, $hash_key) {
    return base64_encode(openssl_encrypt($document_id, 'AES-256-CBC', $hash_key, 0, substr($hash_key, 0, 16)));
}

// Function to decrypt document ID using the hash key
function decryptDocumentID($encrypted_id, $hash_key) {
    return openssl_decrypt(base64_decode($encrypted_id), 'AES-256-CBC', $hash_key, 0, substr($hash_key, 0, 16));
}

// Example usage
$document_id = 12345;
$encrypted_id = encryptDocumentID($document_id, $hash_key);
echo "Encrypted ID: " . $encrypted_id . "\n";

$decrypted_id = decryptDocumentID($encrypted_id, $hash_key);
echo "Decrypted ID: " . $decrypted_id . "\n";
?>