AES Encryption and Decryption Using MySQL Functions
When working with sensitive data, encryption becomes crucial for protecting information from unauthorized access. MySQL provides various encryption functions, including AES_ENCRYPT and AES_DECRYPT, to safeguard data. However, some users encounter difficulties while attempting decryption after encryption using these functions.
Problem:
When querying a row from a table using AES_DECRYPT after encrypting it with AES_ENCRYPT, the result might appear as a binary string rather than the expected plaintext.
Solution:
According to the MySQL documentation, AES_DECRYPT should return the original string after decryption. However, there could be situations where it still returns a binary string.
The following code demonstrates a workaround for this issue:
SELECT *, CAST(AES_DECRYPT(first_name, 'usa2010') AS CHAR(50)) first_name_decrypt FROM user
By explicitly casting the decrypted value to a character type using CAST(), you can ensure that it is displayed as a readable string. Use the first_name_decrypt column in your queries to retrieve the decrypted plaintext instead of the original first_name column.
The above is the detailed content of Why does AES_DECRYPT return a binary string instead of plaintext in MySQL?. For more information, please follow other related articles on the PHP Chinese website!