一、需求:

数据库中存储的数据为加密后的结果,而在后台页面中显示的是解密的结果,由于是双向加密(对称加密),所以MD5不适合,采用AES加密,这种加密方法jeesite自带!!

1.数据库截图:

2.页面截图:

二、代码展示:

1.由于保存进数据库时,是对后台的操作,所以在Service层中的save方法进行加密

1
2
3
4
5
6
7
8
9
@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层中解密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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方法
  各个文件都有其前后台功能,相应的操作最好写在相应的文件中,避免代码的重复

/ 小白一个,仅留做自我学习记忆,时常修改,有不对不全之处还望不吝赐教! /