jeesite学习笔记——加密解密功能
一、需求:
数据库中存储的数据为加密后的结果,而在后台页面中显示的是解密的结果,由于是双向加密(对称加密),所以MD5不适合,采用AES加密,这种加密方法jeesite自带!!
二、代码展示:
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方法
注意:各个文件都有其前后台功能,相应的操作最好写在相应的文件中,避免代码的重复
/ *小白一个,仅留做自我学习记忆,时常修改,有不对不全之处还望不吝赐教!* /
下一篇:
如何写出让人看不懂的MATLAB代码?