MD5加密Test
过程涉及到的代码非原创
来源:https://blog.csdn.net/weixin_43161811/article/details/84140900
书接上文,上一次在pom.xml中引入了两个关于MD5加密的jar包。
在这先额外普及一下MD5加密的百度百科吧
MD5加密:
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
这次我们搞个小例子试验一下。目的是实现:在代码中写一个固定的字符串,再从console控制台输出一下加密后的字段。
在src/main/java,目录下新建一个包
点击finish,再从包下新建一个类
然后把下面的代码粘到新建的类中
// 带秘钥加密
public static String md5(String text, String key) throws Exception {
// 加密后的字符串
String md5str = DigestUtils.md5Hex(text + key);
System.out.println("MD5加密后的字符串为:" + md5str);
return md5str;
}
// 不带秘钥加密
public static String md52(String text) throws Exception {
// 加密后的字符串
String md5str = DigestUtils.md5Hex(text);
System.out.println("MD52加密后的字符串为:" + md5str + "\t长度:" + md5str.length());
return md5str;
}
/**
* MD5验证方法
*
* @param text明文
* @param key密钥
* @param md5密文
*/
// 根据传入的密钥进行验证
public static boolean verify(String text, String key, String md5) throws Exception {
String md5str = md5(text, key);
if (md5str.equalsIgnoreCase(md5)) {
System.out.println("MD5验证通过");
return true;
}
return false;
}
我们先试一下不带密匙的加密,在main中给md52写一个死的值(111111)
右击项目运行一下
效果如下
我们再从网上找个在线工具试一下,看111111的32未加密是不是图中字符串
结果没错,说明我们成功了。
ps:要注意一点md5加密是单向的,只能加密,不可解密。
我们再试一下带密匙的加密(key 俗称撒盐)
对比一下代码,区别很明显就是多了个key,key是我们自己定义的是固定的(可知的)
我们微改一下代码如图,然后右击运行。
得到结果,这样就算是比较简单的字符串,在我们强制加入自定义的字符串(key)后就可以实现复杂加密了。