前言
MD5
信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
MD5
,曾经红极一时的不可逆加密算法,被应用于各行各业中。尤其在数据安全和传输领域,贡献颇丰。
1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。
2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
因此,在如今越来越注重数据安全的时代,安全始终是首要考虑的目标。这里不得不介绍一下新的替代工具了:BCryptPasswordEncoder
。
BCryptPasswordEncoder
1.简介
BCryptPasswordEncoder
是spring-secrity
提供的数据加密方案,示意图如下:
它采用HASH算法,通过SHA-256 + 随机盐 + 密钥对数据进行加密。哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),所以如果逆向破解,简直比"蜀道难"
还难~
2.如何使用
这里的核心是encode
和matchs
的使用。
2.1 加密
使用encode完成文本加密,代码示意如下:
//创建BCryptPasswordEncoder
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
//加密
String text = "hello 三度经纬";
//输出hash值,另存
String hash = passwordEncoder.encode(text);
2.2 验证
//创建BCryptPasswordEncoder
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
//验证是否正确
boolean isValid = passwordEncoder.matches("明文", "密文");
结语
写代码时,必须优先考虑安全,就像采矿一定要提前准备好安全帽一样。博主偶得有一句话:“没有绝对的安全,只有不懈的努力”
。