【MD5】MD5校验文件的正确性

背景:

在某些情景下,需要对上传的文件进行校验,是否是安全的、完整的。比如,实现在web端上传war包,更新web后台。那么,在这一过程中,需要确保要上传的war包是正确的,而非被别有用心的人替换过的;也要确保war包,在上传过程中没有发生缺包状况,保证war包的完整性。

原理

MD5值是一串hash值,文件只要有任何字节变动,MD5值就会跟着改变,因此可以作为校验文件的依据。

  1. 在前端输入MD5值,选中要上传的war包。
  2. 在前端判断war包的MD5值,与输入的MD5值是否相同,判断是否被替换。
  3. 在后台进行校验接收的war包的MD5值,与输入的MD5值是否相同,判断是否存在丢包情况。

实现

前端

前端校验MD5值,可以引入spark.js。详细流程可以查看这篇博文,–>javascript 计算文件MD5 浏览器 javascript读取文件内容,<–

后台

// 获取文件MD5值
File file = new File(filePath);
fis = new FileInputStream(file);
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] buffer2 = new byte[1024];
int length2 = -1;
while ((length2 = fis.read(buffer2, 0, 1024)) != -1) {
    md.update(buffer2, 0, length2);
}
BigInteger bigInt = new BigInteger(1, md.digest());
String md5val = bigInt.toString(16);
if (!StringUtils.equalsIgnoreCase(filemd5, md5val)) {
  // MD5值不一致
    errormsg = "md5_error";
}
    原文作者:swlws9527
    原文地址: https://blog.csdn.net/swl979623074/article/details/78713258
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞