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

来源:互联网 发布:软件著作权申请网址 编辑:程序博客网 时间:2024/05/17 01:55

背景:

在某些情景下,需要对上传的文件进行校验,是否是安全的、完整的。比如,实现在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";}
原创粉丝点击