排查 MySQL 中的 AES 解密問題
在 MySQL 中處理加密資料時,了解可用的加密和解密函數至關重要。本文解決了嘗試解密使用 AES 加密加密的資料時遇到空白結果的問題。
在 MySQL 中,AES_ENCRYPT 和 AES_DECRYPT 函數都會對二進位字串進行操作。預期的行為是 AES_DECRYPT 將解密的資料作為字串傳回。但在某些情況下,解密後的資料可能仍然是二進位格式,導致結果顯示為空。
為了解決這個問題,MySQL 手冊建議使用 CAST() 函數明確轉換解密後的二進位字串成一個字串。實作方法如下:
SELECT *, CAST(AES_DECRYPT(first_name, 'usa2010') AS CHAR(50)) AS first_name_decrypt FROM user
在此查詢中,解密的first_name 欄位將轉換為最大長度為50 個字元的字串。這可確保解密的資料顯示為可讀取的文字字串。
遵循此方法,您可以成功解密並查看表中的加密資料。請記住根據解密資料的預期長度根據需要調整 CAST() 函數中的字元長度。
以上是為什麼我的 MySQL AES 解密回傳空白結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!