注意: AES_ENCRYPT 的结果是一个二进制字符串值。因此,它应该存储在 BLOB、LONGBLOB 或 BINARY 类型的列中。使用 utf8 或 latin1 varchar 存储结果将无法按预期工作。
select (AES_ENCRYPT('text',SHA2('My secret passphrase',512),RANDOM_BYTES(16)))
select AES_DECRYPT(AES_ENCRYPT('ABC', 'key') ,'key')
SELECT AES_DECRYPT(AES_ENCRYPT('ABC', 'key_string'), 'key_string');
select AES_DECRYPT(AES_ENCRYPT('sdfsdfsdf',SHA2('My secret passphrase',512),RANDOM_BYTES(16)),SHA2('My secret passphrase',512))
CREATE TABLE `testTable` (
`test` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
-- 修改表的字符串类型为utf8mb4才能插入特殊字符串
alter table testTable convert to character set utf8mb4 collate utf8mb4_bin
比较简单的方式是,使用mysql内置的加密解密函数就可以在插入sql的时候对特性的字符串进行加密和解密了
别的方法
官方文档 使用 MySQL Keyring SECRET 和非对称加密