文件做MD5校验
来源:互联网 发布:淘宝客服招聘文案 编辑:程序博客网 时间:2024/05/18 03:07
为了防止文件被篡改,大多数比计算MD5数据进行对比:
/**
* 类名 :Md5CheckFile 功能描述 :对比本地计算文件的md5与服务器计算是否一致 :
*/
public class Md5CheckFile {
/**
* 函数名 :CheckMd5Value 功能描述 :对比本地计算文件的md5与服务器计算是否一致 输入参数 : (1) 本地需要计算文件的路径
* (2) 服务器对该文件计算得到的md5 返回值 : boolean 异 常
*/
public static boolean CheckMd5Value(String packagePath, String crc) {
InputStream signedData = null;
try {
PLog.e("MD5", "server ori zip md5 is" + crc);
MessageDigest sig = MessageDigest.getInstance("MD5");
File packageFile = new File(packagePath);
signedData = new FileInputStream(packageFile);
byte[] buffer = new byte[4096];// 每次检验的文件区大小
long toRead = packageFile.length();
long soFar = 0;
boolean interrupted = false;
while (soFar < toRead) {
interrupted = Thread.interrupted();
if (interrupted)
break;
int read = signedData.read(buffer);
soFar += read;
sig.update(buffer, 0, read);
}
byte[] digest = sig.digest();
String digestStr = bytesToHexString(digest);// 将得到的MD5值进行移位转换
PLog.e("MD5", "local zip md5 is" + digestStr);
digestStr = digestStr.toLowerCase();
crc = crc.toLowerCase();
if (digestStr.equals(crc)) {// 比较两个文件的MD5值,如果一样则返回true
return true;
}
} catch (Exception e) {
return false;
} finally {
if (signedData != null) {
try {
signedData.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return false;
}
/**
* 函数名 :bytesToHexString 功能描述 : byte数组转成String 输入参数 : (1) 数组 返回值 : string 异
* 常 :无
*/
public static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
int i = 0;
while (i < src.length) {
int v;
String hv;
v = (src[i] >> 4) & 0x0F;
hv = Integer.toHexString(v);
stringBuilder.append(hv);
v = src[i] & 0x0F;
hv = Integer.toHexString(v);
stringBuilder.append(hv);
i++;
}
return stringBuilder.toString();
}
}
- 文件做MD5校验
- C# MD5文件校验
- C# MD5文件校验
- C# MD5文件校验 .
- MD5 生成文件校验
- MD5文件校验
- MD5文件校验
- 文件的MD5校验
- MD5 生成文件校验
- md5校验文件数据
- 【MD5】MD5校验文件的正确性
- MD5校验文件/读取签名MD5
- python中md5文件校验
- cocos2d-x 文件MD5校验
- Java MD5 文件校验处理
- 计算文件的MD5校验
- 关于MD5文件的校验
- Mac校验文件SHA、MD5
- java中的线程池类型
- 互联网协议入门
- Ajax关于readyState和status的讨论
- Java字符串的截取
- request response 下载文件
- 文件做MD5校验
- Jquery基础知识
- spring返回json的四种方式
- Java 序列化
- C# 打印PDF文件
- Glide工具类
- 数据表_业务地址(Business Address)信息
- Opencv2与opencv1的区别
- Android中获取屏幕高度与宽度的方法.