一些私密的业务数据,如客户手机号、邮箱地址、卡号等,可以进行加密,加密后,以密文的方式被存储至数据库中。

插件会自动生成一个应用密钥,该密钥保存在 /storage/apps/main/encryption-field-keys 目录中。
应用密钥文件名为密钥 ID ,后缀名为 .key ,请勿随意修改文件名。
请妥善保管应用密钥文件,如果丢失应用密钥文件,加密数据将无法解密。
/storage/apps/${子应用name}/encryption-field-keys采用信封加密的方式

应用密钥,以 base64 编码的方式保存到默认存储目录中。字段密钥,然后使用应用密钥和随机生成的 16 位字段加密向量对其进行加密(AES加密算法),然后保存到 fields 表的 options 字段中。fields 表的 options 字段中获取加密的字段密钥和字段加密向量。应用密钥和字段加密向量对已加密的字段密钥进行解密,然后使用字段密钥和随机生成的 16 位数据加密向量对数据进行加密(AES加密算法)。字段密钥对数据进行签名(HMAC-SHA256摘要算法),以 base64 编码转为字符串(生成的数据签名后续用于数据检索)。数据加密向量和加密后的数据密文进行二进制拼接,以 base64 编码转为字符串。数据签名 base64 编码字符串 和拼接后的数据密文 base64 编码字符串以 '.' 分隔拼接。如果想要指定应用密钥,可以使用环境变量 ENCRYPTION_FIELD_KEY_PATH,插件将加载该路径下的文件作为应用密钥。
应用密钥文件格式要求:
.key。
加密后的字段仅支持:等于、不等于、存在、不存在。

数据筛选方式:
字段密钥 ,使用应用密钥解密字段密钥。字段密钥对用户输入的检索文本进行签名(HMAC-SHA256摘要算法)。.分隔符,在数据库中对加密字段进行前缀匹配检索。
使用密钥轮转命令 nocobase key-rotation 前先确认应用已经加载本插件。
应用迁移到新的环境后,不想继续使用和旧环境相同的密钥时,可以使用 nocobase key-rotation 命令替换应用密钥。
运行密钥轮转命令需要指定旧环境的应用密钥,命令运行后将会生成新的应用密钥,并替换旧密钥。新的应用密钥以 base64 编码的方式保存到默认存储目录中。
如果是替换子应用 应用密钥 需要添加 --app-name 参数,指定子应用 name