如何在mysql中通过解密查看原始数据?

时间:2012-06-27 10:28:27

标签: mysql

我加密了我的密码字段并将其插入MySQL表中。 之后,我通过

解密了该列
select fld_user,fld_pwd,AES_DECRYPT(fld_encryptedpwd,'key')
  from users 
 where fld_id='1903';

但是,结果显示“BLOB”。我使用Varbinary()作为加密列的数据类型。我该怎么做?

1 个答案:

答案 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;

这将显示将返回的数据类型。

(再次,存储加密密码:不太好。)