云笔记项目(ssm)

本文介绍了使用Java进行MD5加密的过程,包括无盐加密和加盐(key)加密。通过代码示例展示了如何对固定字符串进行加密,并验证了加密结果的正确性。强调了MD5加密的单向性,以及加盐提高加密复杂度的重要性。
摘要由CSDN通过智能技术生成

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)后就可以实现复杂加密了。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值