前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MD5只是用于加密吗?可听过文件MD5?

MD5只是用于加密吗?可听过文件MD5?

作者头像
用户2242639
发布2021-06-29 15:39:37
1.2K0
发布2021-06-29 15:39:37
举报
文章被收录于专栏:Java经验总结Java经验总结

百度百科

MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。

1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

从上面的介绍来说 MD5 人家只是个算法,只是多用于加密,但是人家还有个用处就是用于来校验文件是否完整。为什么这么说呢?同一个文件(比如说一个文件你 copy 一份换了一个名字,并没有修改) MD5 过后何获取文件 MD5 校验值结果是一样的。这就是问什么你下载的时候都会跟一个 MD5 的值,他是让你交验一下文件是否完整。

其还有个作用,比如说用户连续上传文件,一般人的做法就是:我给这个文件生成 UUID 名称,然后把 UUID 存在数据库中,但是如果用户连续不停的上传同一个文件,打个比方,你的网站有 10w 人访问,他们有 10% 的人把同一个文件上传了两份,一份文件是 1MB 这就多占了你 10000MB 空间。但是如果你设计一下用户上传的时候你先计算一下他的 MD5 的值然后去文件库里查找,如果存在则只要把之前的路径引用存放到你现在的库里就可以了,速度提升了,而且空间也省了很多。

说了这么多,我们来实际用用吧,怎么获取文件的 MD5 值。

引入maven

代码语言:javascript
复制
<dependency>
  <groupId>cn.hutool</groupId>
  <artifactId>hutool-all</artifactId>
  <version>5.6.5</version>
</dependency>

hutool 不用我说了吧

测试代码

代码语言:javascript
复制
public static void main(String[] args) {
    MD5 md5 = MD5.create();
    String s = md5.digestHex(new File("text.md"));
    System.out.println(s);
}

是不是很简单。学到了吧。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java经验总结 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 百度百科
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档