目前的需求爲防止因爲不可控緣由形成數據庫數據泄露時,可以避免得到應用內的敏感信息。算法
通過調研業內目前主要有如下兩種方式實現:sql
使用 AES_ENCRYPT
和 AES_DECRYPT
加密解密函數實現。其須要知足以下條件:數據庫
- 數據庫系統支持
分析其優勢以下:markdown
其缺點有如下幾點:框架
在應用層經過更改錄入和查詢的相關代碼,在數據錄入前加密存儲,在數據讀取後解密後再返回。ide
其優勢以下:函數
其缺點有:加密
須要更新Model定義code
第一種方案由於使用的 sql 語句來實現,項目爲防止 sql 注入類***大量使用了框架的ORM,目前尚未找到加密函數與ORM結合使用的好方法,須要改大量代碼。目前可比較可控靈活操做的是第二種方案,經過更新 Model 定義完成數據存取時自動的加密和解密。it