前言
最近在工作中遇到一个需求是这样的:需要在使用AES_ENCRYPT()函数将明文加密,存储在MySQL中,但是遇到了一些问题……下面就来详细介绍下。
说将加密后的密文,解密取出来是NULL。
看了一下,她发过来的表结构:
再看了她通过AES_DECRYPT()函数加密了一个字符串,然后insert进去了,执行成功后,显示了一个warning:
Query OK, 1 row affected, 1 warning (0.00 sec)
(没有报错而是warning,大概是sql_mode的缘故)
此时她忽略了这个warning,再通过AES_DECRYPT()解密后,发现取出来的明文为NULL。
再回看表结构,发现其字段属性为“varchar” && 字符集是ut8,检查warning为下: mysql> show warnings;
+---------+------+------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------