我加密了我的密码字段并将其插入MySQL表中。 之后,我通过
解密了该列select fld_user,fld_pwd,AES_DECRYPT(fld_encryptedpwd,'key')
from users
where fld_id='1903';
但是,结果显示“BLOB”。我使用Varbinary()作为加密列的数据类型。我该怎么做?
答案 0 :(得分:5)
MySQL Workbench中的解决方案是为SQL编辑器切换以下选项:“将BINARY / VARBINARY视为非二进制字符串。”至少在MacOS X上,您需要重新启动Workbench才能使选项生效。 (您也可以右键单击该值并执行“在查看器中打开值”)。
如果您不想更改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;
这将显示将返回的数据类型。
(再次,存储加密密码:不太好。)