我加密了我的密碼字段並將其插入MySQL表中。 之後我解密該列由如何通過解密在mysql中查看原始數據?
select fld_user,fld_pwd,AES_DECRYPT(fld_encryptedpwd,'key')
from users
where fld_id='1903';
但是,其結果是顯示「BLOB」。我使用Varbinary()作爲加密列的數據類型。我該做什麼 ?
我加密了我的密碼字段並將其插入MySQL表中。 之後我解密該列由如何通過解密在mysql中查看原始數據?
select fld_user,fld_pwd,AES_DECRYPT(fld_encryptedpwd,'key')
from users
where fld_id='1903';
但是,其結果是顯示「BLOB」。我使用Varbinary()作爲加密列的數據類型。我該做什麼 ?
在MySQL Workbench中的解決方案是爲SQL編輯器切換以下選項:「將BINARY/VARBINARY作爲非二進制字符串處理」。至少在MacOS X上,您需要重新啓動Workbench才能使選項生效。 (您也可以右鍵單擊該值並執行「在查看器中打開值」)。
如果你不想改變工作臺的選項,你可以使用CAST()功能作爲一個字符串返回的AES_DECRYPT()結果:
SELECT fld_user, fld_pwd, CAST(AES_DECRYPT(fld_encryptedpwd, 'key') AS CHAR)
FROM users WHERE fld_id='1903';
了一個小竅門檢查/確認哪些數據類型函數返回的是使用MySQL CLI執行以下操作:
mysql> CREATE TALBE tmp1 AS SELECT AES_DECRYPT(fld_encryptedpwd, 'key')
FROM users WHERE fld_id='1903';
mysql> DESC tmp1;
這將顯示將返回哪種數據類型。
(同樣,存儲加密密碼:不太好。)
您不提「它在哪裏顯示爲BLOB」。哪個MySQL版本? – geertjanvdk
另外,您不應該使用AES_ENCRYPT()來存儲密碼。您應該至少使用SHA-1這樣的單向散列。一旦人們獲得密鑰,加密就比僅僅存儲純文本還要糟糕。 – geertjanvdk
@geertjanvdk BLOB顯示在我的輸出字段中,我無法使用單向哈希。因爲,有時我需要解密密碼字段 – Dhileepan