本文介绍: 用户端:PASS=MD5(明文+固定Salt)服务端:PASS=MD5(用户输入+随机Salt)用户端MD5加密是为了防止用户密码在网络中明文传输,服务端MD5加密是为了提高密码的安全性,双重保险而且,单纯多次MD5运算并不能提高其安全性。对于安全加密需求,建议使用更强大和安全的哈希算法,如SHA-256、SHA-3等。的终端设备或应用程序。它可以是电脑、智能手机等。请求的计算机系统或应用程序。
用户端 :
指发起请求并与服务器进行交互的终端设备或应用程序。它可以是电脑、智能手机等。
服务端 :
它监听来自用户端的请求,并根据请求类型执行相应的逻辑操作。服务端处理完请求后,会生成响应并将其发送回用户端。
用户端MD5加密是为了防止用户密码在网络中明文传输,服务端MD5加密是为了提高密码的安全性,双重保险
<!-- md5依赖-->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
MD5工具类
@Component
public class MD5Util {
private static final String salt = "1a2b3c4d";
//对输入的字符串进行一次MD5哈希运算,返回哈希结果的十六进制表示
public static String md5(String src) {
return DigestUtils.md5Hex(src);
}
/*
首先,根据事先定义的 salt 字符串,结合输入密码进行组合,生成一个新的字符串。
然后,对该字符串进行一次MD5哈希运算,返回加密后的结果
*/
//前端传到后端,加密一次
public static String inputPassToFromPass(String inputPass) {
String str = salt.charAt(0) + salt.charAt(2) + inputPass + salt.charAt(5) + salt.charAt(4);
return md5(str);
}
//后端到数据库加密一次
public static String fromPassToDBPass(String fromPass, String salt) {
String str = salt.charAt(0) + salt.charAt(2) + fromPass + salt.charAt(5) + salt.charAt(4);
return md5(str);
}
//真正调用的
public static String inputPassToDBPass(String inputPass, String salt) {
String fromPass = inputPassToFromPass(inputPass);
String dbPass = fromPassToDBPass(fromPass, salt);
return dbPass;
}
public static void main(String[] args) {
//ce21b747de5af71ab5c2e20ff0a60eea
System.out.println(inputPassToFromPass("123456"));
//0687f9701bca74827fcefcd7e743d179
System.out.println(fromPassToDBPass("ce21b747de5af71ab5c2e20ff0a60eea","1a2b3c4d"));
//真正调用的
System.out.println(inputPassToDBPass("123456", "1a2b3c4d"));
}
}
在业务逻辑类实现根据账号获取密码,接着使用MD5判断输入的密码是否正确:
//判断密码是否正确
if (!MD5Util.fromPassToDBPass(password, user.getSalt()).equals(user.getPassword())) {
throw new GlobalException(RespBeanEnum.LOGIN_ERROR);
}
需要注意的是,MD5算法虽然在过去广泛使用,但现今已经不推荐将其用于安全敏感的场景,因为MD5算法存在碰撞攻击和预计算攻击等漏洞,容易被破解。而且,单纯多次MD5运算并不能提高其安全性。对于安全加密需求,建议使用更强大和安全的哈希算法,如SHA-256、SHA-3等。
原文地址:https://blog.csdn.net/weixin_72926030/article/details/133842939
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_14739.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。