一、需求:
数据库中存储的数据为加密后的结果,而在后台页面中显示的是解密的结果,由于是双向加密(对称加密),所以MD5不适合,采用AES加密,这种加密方法jeesite自带!!
1.数据库截图:
2.页面截图:
二、代码展示:
1.由于保存进数据库时,是对后台的操作,所以在Service层中的save方法进行加密
@Transactional(readOnly = false)
public void save(Expert expert) {
//对专家姓名、手机号、邮箱、银行卡号进行AES加密
expert.setExpertname(Cryptos.aesEncrypt(expert.getExpertname()));
expert.setEmail(Cryptos.aesEncrypt(expert.getEmail()));
expert.setPhone(Cryptos.aesEncrypt(expert.getPhone()));
expert.setBankcardnumber(Cryptos.aesEncrypt(expert.getBankcardnumber()));
super.save(expert);
}
2.在数据库中取出数据即是从后台取,所以在Service层中解密
public Expert get(String id) {
//从数据库中读取数据,由于数据库中的数据已经加密,读取时需要解密,然后返回解密后的数据
Expert e = super.get(id);
e.setExpertname(Cryptos.aesDecrypt(e.getExpertname()));
e.setEmail(Cryptos.aesDecrypt(e.getEmail()));
e.setPhone(Cryptos.aesDecrypt(e.getPhone()));
e.setBankcardnumber(Cryptos.aesDecrypt(e.getBankcardnumber()));
return e;
}
public List<Expert> findList(Expert expert) {
//解密可以放入findlist,也可以放在fandpage中的fandlist
List<Expert> experts = super.findList(expert);
for(Expert k : experts ) {
k.setExpertname(Cryptos.aesDecrypt(k.getExpertname()));
k.setEmail(Cryptos.aesDecrypt(k.getEmail()));
k.setPhone(Cryptos.aesDecrypt(k.getPhone()));
k.setBankcardnumber(Cryptos.aesDecrypt(k.getBankcardnumber()));
}
return experts;
//return super.findList(expert);
}
public Page<Expert> findPage(Page<Expert> page, Expert expert) {
/*List<Expert> experts = findList(expert);
for(Expert k : experts ) {
k.setExpertname(Cryptos.aesDecrypt(k.getExpertname()));
k.setEmail(Cryptos.aesDecrypt(k.getEmail()));
k.setPhone(Cryptos.aesDecrypt(k.getPhone()));
k.setBankcardnumber(Cryptos.aesDecrypt(k.getBankcardnumber()));
page.setList(findList(k));
}
page.setList(experts);
return super.findPage(page, expert);*/
expert.setPage(page);
page.setList(findList(expert));
return page;
}
注意:由于需要在list页面中和修改页面中都需要显示解密结果,所以需要重写geiId和findPage两个方法,而findPage中的解密可以直接修改findList(注释中的内容),也可以直接重写findList方法
注意:各个文件都有其前后台功能,相应的操作最好写在相应的文件中,避免代码的重复
/ *小白一个,仅留做自我学习记忆,时常修改,有不对不全之处还望不吝赐教!* /