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.