java 前端加密后端解密_前端登陆加密和后端解密

本文介绍了一种前端使用DES加密数据,后端使用JAVA进行解密的方法,确保了数据在传输过程中的安全性。在登录场景中,前端对用户名进行DES加密,并使用UUID作为密钥,后端接收到加密数据后使用相同的UUID解密。同时,密码通过两次MD5处理。文章提供了前端JS和后端JAVA的DE解密代码示例。
摘要由CSDN通过智能技术生成

实现了前端对数据进行加密后传输,后端对加密的数据进行解密,然后去数据库对比。因为要解密所以采用对称加密算法。不讨论哪个对称加密算法好,这里采用DES,在实现的过程中发现要找一个js版本的DES加密,并且java能DES解密的还真不容易。

加解密思路

由于是对称加密,所以加解密的密钥就非常重要。这里采用uuid作为加解密的密钥,而且每次请求页面时生成的uuid都不一样,保证每次的密钥都不知道是什么。

看后端生成密钥的过程

@RequestMapping(value = "/login.html", method = RequestMethod.GET)

public String login(Model model, HttpSession session) {

logger.info("登录页面");

session.setAttribute(SessionParam.LOGIN_KEY, UUIDGenerator.getUUID());

model.addAttribute("title", "用户登录");

return "admin/login";

}

在进入login页面的时候将生成的uuid放进session中。

// 密码进行两次md5

var passwordMd5 = CryptoJS.MD5(password);

passwordMd5 = CryptoJS.MD5(passwordMd5);

// console.info("md5:" + passwordMd5);

$(this).val("正在登录...");

$(this).attr("disabled", true);

// 用户名des加密

username = encryptByDES(username, key);

// 填充表单并提交表单

$("#postUsername").val(username);

$('#postPassword').val(passwordMd5);

$('#postForm').submit();

// DES加密

function encryptByDES(message, key) {

var keyHex = CryptoJS.enc.Utf8.parse(key);

var encrypted = CryptoJS.DES.encrypt(message, keyHex, {

mode : CryptoJS.mode.ECB,

padding : CryptoJS.pad.Pkcs7

});

return encrypted.toString();

}

当表单准备好之后,对密码进行两次MD5,用户名则采用DES加密,加密的密钥就是session中保存的那个uuid

后端再对传过来的用户名进行解密,因为数据库本来就存的是密码的两次MD5的值,所以只对用户名进行加密,因为即使密码被获取到,也不知道是什么。

后端过程

// 得到加密密钥

logger.info("-----原始数据:username:{} password:{}-----", username, password);

String key = session.getAttribute(SessionParam.LOGIN_KEY) + "";

logger.info("-----加解密key:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值