目前的需求为防止因为不可控缘由形成数据库数据泄露时,可以避免得到应用内的敏感信息。算法
通过调研业内目前主要有如下两种方式实现:sql
使用 AES_ENCRYPT
和 AES_DECRYPT
加密解密函数实现。其须要知足以下条件:数据库
- 数据库系统支持
分析其优势以下:markdown
其缺点有如下几点:框架
在应用层经过更改录入和查询的相关代码,在数据录入前加密存储,在数据读取后解密后再返回。ide
其优势以下:函数
其缺点有:加密
须要更新Model定义code
第一种方案由于使用的 sql 语句来实现,项目为防止 sql 注入类***大量使用了框架的ORM,目前尚未找到加密函数与ORM结合使用的好方法,须要改大量代码。目前可比较可控灵活操做的是第二种方案,经过更新 Model 定义完成数据存取时自动的加密和解密。it