普通的md5因为其代表的密码是一致的,这里说的比较抽象,看下面举的例子
例如一串密码wer123456,加密后可能会是b6a6c36f9d25aa74(瞎写的)
其中w,e,r,1,2,3,4,5,6,在每次加密后,代表的都是相同的加密代码,也就是其他人可用通过试错法,一个一个比对,将我们的加密之后的代码破解。
而加盐salt就是为了防止这种情况的出现,因为其他人不知道我们在什么地方加了盐,因此基本不可能把盐给试出来。
我是用的是SpringBoot 的test
@RunWith(SpringRunner.class)
@SpringBootTest(classes = UserApplication.class)
public class SaltUtil {
@Test
public void md5Hex(){
1.生成UUid,并且把中间的-去掉,充当我们的salt
String salt = StringUtils.replace(UUID.randomUUID().toString(), "-", "");
System.out.println(salt);
2.将salt和密码,使用md5算法,结合起来
String mima123456 = DigestUtils.md5Hex(salt + DigestUtils.md5Hex("mima123456"));
System.out.println(mima123456);
}
}
输出结果
8010aba0ce8a4dd6810eeecd47f16a47 UUID
b6a6c36f9d25aa7460fbc7fe0c5725a1 加盐后生成的md5
需要导入的包 commons-codec
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
|