Jslfl【软件开发技术笔记】

mysql敏感字段加密存储

数据库中的敏感数据一般需要进行加密处理,以防泄露,如身份证号、手机等等。在mysql中可以通过4个函数来轻松解决:
AES_ENCRYPT(明文,加密key):加密
AES_DECRYPT(明文,加密key):解密
HEX(str):换为十六进制格式的字符串
UNHEX(str):将十六进制格式的字符串还原

实现过程:(以mybatis示例)
1.修改数据待处理字段的长度,保证足够长度(加密处理后的字符串会很长,如18位身份证需要70、80的长度,如果是中文字符的话,会更长,强烈建议先根据需要存储的数据范围测试后再确定设置的大概范围)

2.程序中定义加密KEY常量,如

1
2
3
4
package cn.jslfl.common.constant;
public class CommonConstant {
    public static final String MYSQL_ENTRYPT_KEY = "234@dfRw5";
}

3.insert或update语句中加密

1
2
3
4
insert into t_test (id,idcard)
values(
  HEX(AES_ENCRYPT(#{idCard},'${@cn.jslfl.common.constant.CommonConstant@MYSQL_ENTRYPT_KEY}'))
)

4.查询时解密

1
2
3
4
select
  id,
  AES_DECRYPT(UNHEX(idcard),'${@cn.jslfl.common.constant.CommonConstant@MYSQL_ENTRYPT_KEY}') as idcard
from t_test

,

Comments are currently closed.