经过我们第一步的测试,我们可以进行最简单的网页-后台的交互,第二步我们就来进行密码的MD5的加密了。
首先我们为什么要进行MD5加密呢?是这样的,当前端返回给后端密码时,如果不进行加密,很容易被黑客入侵后台给盗取,这是前台到后台的面传输;还有后台到数据库的传输,同样,我们要防黑客攻击数据库,盗取数据库里存储的密码。我们也应在这一阶段设置加密。
所以加密分两段:1前台到数据库的传输;2后台到数据库的传输。
--------------------------------------------------------------------
好了一下开始我们的加密步骤:
第一步:我们首先在pom文件里添加加密依赖,如图:
这是依赖代码,拿去直接用:
<!--MD5依赖加密 --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.6</version> </dependency>
-------------------------------------------------------------------------
第二步我们要写加密工具类了,这是加密代码:
这是工具类的路径,我们提前写好工具类,之后我们要用的话直接调用,以下是代码直接用:
package com.xxxxx.seckilldemo.utils;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Component;
@Component
public class MD5Util {
public static String md5(String src) {
return DigestUtils.md2Hex(src);
}
//定义一个“盐”,使其成为加密的一个依据。
private static final String salt ="1a2b3c4d";
//第一次加密:用户端输入密码传到后端的密码进行加密
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 fromPass(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 = fromPass(fromPass,salt);
return DBPass;
}
}
其实原理也很简单,就是将前端的密码获取到,对其进行加密函数操作,然后返回加密密码。然后在讲这个密码给另一个相似的加密函数操作再进行加密,最后返回的数据库密码。如此操作数据库里的密码就“火星文”了。
这是工具类的代码,等我们要用的时候(书写登录业务的模块的时候)可以直接用。下面会更新。