一、需求:
数据库中存储的数据为加密后的结果,而在后台页面中显示的是解密的结果,由于是双向加密(对称加密),所以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) { 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) { 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; }
public Page<Expert> findPage(Page<Expert> page, Expert expert) {
expert.setPage(page); page.setList(findList(expert)); return page; }
|
注意:
由于需要在list页面中和修改页面中都需要显示解密结果,所以需要重写geiId和findPage两个方法,而findPage中的解密可以直接修改findList(注释中的内容),也可以直接重写findList方法
各个文件都有其前后台功能,相应的操作最好写在相应的文件中,避免代码的重复
/ 小白一个,仅留做自我学习记忆,时常修改,有不对不全之处还望不吝赐教! /
本文标题:jeesite学习笔记——加密解密功能
文章作者:foreverSFJ
发布时间:2018-08-29 21:21:10
最后更新:2018-08-29 21:21:10
原始链接:Project/JeeSite/jeesite学习笔记——加密解密功能.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!