过程涉及到的代码非原创 来源: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)后就可以实现复杂加密了。