简单的电影网站模板,做网站 怎么样找客户,wordpress 字母排列文章,网站引导页模板用户端 #xff1a; 指发起请求并与服务器进行交互的终端设备或应用程序。它可以是电脑、智能手机等。 用户端负责发送请求给服务端#xff0c;并接收和处理服务端返回的响应。 服务端 #xff1a; 是指提供服务、接收和处理用户端请求的计算机系统或应用程序。 它监听来自用… 用户端 指发起请求并与服务器进行交互的终端设备或应用程序。它可以是电脑、智能手机等。 用户端负责发送请求给服务端并接收和处理服务端返回的响应。 服务端 是指提供服务、接收和处理用户端请求的计算机系统或应用程序。 它监听来自用户端的请求并根据请求类型执行相应的逻辑操作。服务端处理完请求后会生成响应并将其发送回用户端。 用户端PASSMD5(明文固定Salt) 服务端PASSMD5(用户输入随机Salt) 用户端MD5加密是为了防止用户密码在网络中明文传输服务端MD5加密是为了提高密码的安全性双重保险 引入pom.xml
!-- md5依赖--
dependencygroupIdcommons-codec/groupIdartifactIdcommons-codec/artifactId
/dependency
dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-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) {//ce21b747de5af71ab5c2e20ff0a60eeaSystem.out.println(inputPassToFromPass(123456));//0687f9701bca74827fcefcd7e743d179System.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等。