项目中加密解密遇到的问题小结

项目需将电话、身份证、薪资等敏感信息加密存储,使用第三方加密工具。改造时原计划在实体类属性set时加密、get时解密,但运行发现数据库字段未加密,因插入前会调用get方法。最终额外加字段存储加密数据,改动mybatis的xml文件字段,在service方法插入前添加代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近的项目中,改造,需要将电话、身份证、薪资等敏感信息加密存储。有用到第三方加密工具,初始化并直接调用其API即可。

加密算法、初始化、配置文件这些就不写了,讲下改造中遇到的一个问题。

开始的想法是,在实体类中对需要加密的属性,set时加密,get时解密。但项目运行后发现,数据库中的字段并没有加密,执行完set方法后,在插入数据库数据之前 ,会调用该字段的get方法获取数据插入数据库。所以在额外加一个字段来存储加密的字段。使2者分离。

...
private String identity;		// 号码
private String encryptIdentity;	// 加密号
...
public String getIdentity() {
	return SecretUtils.decrypt(identity);
}
 
public void setIdentity(String identity) {
	this.identity = identity;
}
//---------加密部分--------------//
public String getEncryptIdentity() {
	return encryptIdentity;
}
 
public void setEncryptIdentity(String encryptIdentity) {
	this.encryptIdentity = encryptIdentity;
}

在mybatis的xml文件中, 将insert   和 update  的字段稍稍改动,替换成新添加的加密字段。

在service方法里,插入数据库操作之前还要加几段代码

...
user.setEncryptIdentity(SecretUtils.encrypt(user.getIdentity()));
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值