当前位置:   article > 正文

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

java登陆账号密码前端加密,后端解密

实现了前端对数据进行加密后传输,后端对加密的数据进行解密,然后去数据库对比。因为要解密所以采用对称加密算法。不讨论哪个对称加密算法好,这里采用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:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/353031
推荐阅读
相关标签
  

闽ICP备14008679号