4

我在mysql数据库中有一张表:

CREATE TABLE IF NOT EXISTS `t` (
  `q` varchar(257) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

我向它添加了两个值 - 一个是通过 mysql-console 和另一个来自 phpmyadmin:

insert into t(q) values(aes_encrypt('from phpmyadmin', 123456));
insert into t(q) values(aes_encrypt('from mysql console', 123456));

我试图显示它:

select aes_decrypt(q,123456) from t;

从 mysql-console 我得到以下输出:

mysql> select aes_decrypt(q,123456) from t;
+-----------------------+
| aes_decrypt(q,123456) |
+-----------------------+
| from phpmyadmin       |
| from mysql console    |
+-----------------------+
2 rows in set (0.00 sec)

从 phpadmin 我得到以下输出: 在此处输入图像描述

为什么 phpmyadmin 不显示正确的输出?

4

2 回答 2

11

aes_decrypt函数产生二进制数据。尝试

select cast(aes_decrypt(q,123456) as char) from t LIMIT 0, 30;

在您的 phpMyAdmin 上。

于 2013-06-01T18:24:09.083 回答
0

您可以尝试以下查询

select aes_decrypt(unhex(q),123456) from t;
于 2017-05-08T09:23:49.640 回答