我创建了用户表
CREATE TABLE `user` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`first_name` VARBINARY(100) NULL ,
`address` VARBINARY(200) NOT NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)
我插了一行:
INSERT into user (first_name, address) VALUES (AES_ENCRYPT('Obama', 'usa2010'),AES_ENCRYPT('Obama', 'usa2010'));
Run Code Online (Sandbox Code Playgroud)
要选择我使用的这一行:
SELECT AES_DECRYPT(first_name, 'usa2010'), AES_DECRYPT(address, 'usa2010') from user;
Run Code Online (Sandbox Code Playgroud)
我得到以下结果.我需要做什么才能看到我的数据.没有数据对我来说是可见的.

Joh*_*Woo 34
根据手册:
AES_ENCRYPT()加密字符串并返回二进制字符串. AES_DECRYPT()解密加密的字符串并返回原始字符串.
我不知道为什么它仍然在你的情况下返回一个二进制字符串.无论如何,试试这个:
SELECT *,
CAST(AES_DECRYPT(first_name, 'usa2010') AS CHAR(50)) first_name_decrypt
FROM user
Run Code Online (Sandbox Code Playgroud)
并使用first_name_decrypt而不是first_name.
小智 13
从mysql命令行客户端,不需要使用CAST:
mysql> SELECT AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc');
+-----------------------------------------------+
| AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc') |
+-----------------------------------------------+
| admin |
+-----------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CAST(AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc') AS CHAR (50));
+------------------------------------------------------------------+
| CAST(AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc') AS CHAR (50)) |
+------------------------------------------------------------------+
| admin |
+------------------------------------------------------------------+
1 row in set (0.02 sec)
Run Code Online (Sandbox Code Playgroud)
CAST
mysql> SELECT AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc');
+-----------------------------------------------+
| AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc') |
+-----------------------------------------------+
| admin |
+-----------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CAST(AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc') AS CHAR (50));
+------------------------------------------------------------------+
| CAST(AES_DECRYPT(AES_ENCRYPT('admin','abc'),'abc') AS CHAR (50)) |
+------------------------------------------------------------------+
| admin |
+------------------------------------------------------------------+
1 row in set (0.02 sec)
Run Code Online (Sandbox Code Playgroud)
CAST
正如您所看到的,在命令行中使用cast会慢一点.但是我注意到如果你使用像phpmyadmin这样的工具,那么你需要使用CAST,否则结果会出错.
| 归档时间: |
|
| 查看次数: |
88500 次 |
| 最近记录: |