Springboot学习-MD5盐值密码加密 DigestUtils和BCryptPasswordEncoder
使用场景:当需要从后端向数据库中存储密码类型的信息时,可以采取可逆加密或不可逆加密.
MD5盐值加密是一种不可逆加密法.
- MD5
- Message Digest algorithm 5 ,信息摘要算法
- 压缩性:任意长度的数据,算出的MD5值长度都是固定的
- 容易计算:从源数据计算出MD5值很容易
- 抗修改性:对原数据进行任何改动(哪怕一个字节),所得到的MD5值都有很大的区别
- 强抗碰撞:向找到两个不同的数据,使它们具有相同的MD5值,是非常困难的
- 不可逆(除非暴力破解)
- Message Digest algorithm 5 ,信息摘要算法
- 加盐(防止MD5被暴力破解)
- 通过生成随机数与MD5生成字符串进行组合
- 数据库同时存储MD5值和salt盐值.验证正确性时使用salt进行MD5即可
1. 使用DigestUtils生成MD5值测试:
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.digest.Md5Crypt;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@Test
void contextLoads