一、业务场景
-
在实际开发过程中,数据库表中有些特殊敏感字段(邮箱、手机号码等等),出于敏感信息安全考虑是不能以明文的形式存储在数据库的。这个时候就需要对指定字段入库进行加密,获取结果的时候解密
-
一般情况下,常规方案都是在接口业务实现类封装入库参数的时候对指定属性值进行加密;获取数据的时候,遍历每条数据对指定属性值进行解密返回
-
以上方案对业务代码有一定侵入性,不符合开发规范。我们代码设计的思路是"高内聚,低耦合",为了实现这个思路,就必须降低代码的侵入性.。那如何在不侵入业务代码的提前下,对指定属性值进行优雅的加解密呢?
-
设定方案:
在不侵入业务代码的情况下,对入参和出参进行处理,实现无缝加密解密(将明文加密后保存至数据库;从数据库读取时,自动将密文解密成明文)
二、加密方式
1.Java中有哪几种常用加密方式?
Java中加密分为两种方式:一个是对称加密,另一个是非对称加密。对称加密是因为加密和解密的钥匙相同,而非对称加密是加密和解密的钥匙不同。
- 常用加密算法
名称 | 加密方式 | 简介 | 速度 | 安全性 |
---|---|---|---|---|
DES | 对称加密 | <