一.MD5的相关概念方面的介绍
直接百度百科:http://baike.baidu.com/link?url=RKTreLBg7W6wCeay1ZciUv8vpBv923HcFzEM3DFgzLCD1jpA_o6W9pIo1FD_ztUeuexBZ-m5YEuz9vwXJ9QAp_
二.MD5值的生成步骤:
1》MD5的生成工具:MD5Calc.exe
2》MD5软件的下载地址:http://pan.baidu.com/share/link?shareid=1611929352&uk=637640919&fid=3983931181
下载下来之后直接就可以用了。
3》MD5软件生成相应的MD5值:
以octopus_G03的差分包为例:
将G03的差分包直接拖入MD5值生成软件;将生成的MD5值给到编写差分包对应xml的文件中。
三.MD5的工具类
package com.zhcgwc.otaupdate;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import android.util.Log;
public class MD5 {
static String TAG = "MD5";
private static String createMd5(String str) {
MessageDigest mMDigest;
FileInputStream Input;
File file = new File(str);
byte buffer[] = new byte[1024];
int len;
if (!file.exists())
return null;
try {
mMDigest = MessageDigest.getInstance("MD5");
Input = new FileInputStream(file);
while ((len = Input.read(buffer, 0, 1024)) != -1) {
mMDigest.update(buffer, 0, len);
}
Input.close();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
BigInteger mBInteger = new BigInteger(1, mMDigest.digest());
Log.v(TAG, "create_MD5=" + mBInteger.toString(16));
return mBInteger.toString(16);
}
public static boolean checkMd5(String Md5, String file) {
String str = createMd5(file);
Log.d(TAG, "md5sum = " + str);
if (Md5.compareTo(str) == 0)
return true;
else
return false;
}
}
四.MD5在Android应用开发中使用:
MD值的校验
File file = new File("/mnt/sdcard/ota.zip");
if (file.exists()
&& MD5.checkMd5(mPrefs.getMd5(),UpdateService.DOWNLOAD_OTA_PATH)) {//如果目标文件位置已经存在,MD5校验通过
。。。。。。
}