2

我加密了我的密码字段并将其插入到 MySQL 表中。之后我解密了该列

select fld_user,fld_pwd,AES_DECRYPT(fld_encryptedpwd,'key')
  from users 
 where fld_id='1903';

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

4

1 回答 1

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;

这将显示将返回哪种数据类型。

(同样,存储加密密码:不太好。)

于 2012-06-27T10:59:13.950 回答