mysql 数据库脱敏 数据 字段 加密解密

官方文档 推荐的加密函数

注意: 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 和非对称加密

TDE透明数据加密 MySQL安全相关-- TDE和数据脱敏功能介绍

mysql 数据掩码 插件介绍 不安装 mask_inner函数无法使用


作者:spike

分类: Mysql

创作时间:2023-06-25

更新时间:2023-06-25

联系方式放在中括号之中例如[[email protected]],回复评论在开头加上标号例如:#1