计算文件MD5

4年以前  |  阅读数:1023 次  |     收藏

文件的MD5摘要一般用来表示文件的唯一识别码。本文提供一种生成文件MD5摘要的代码。

@Nullable
public static String getFileMD5(String filePath) {
    FileInputStream in = null;
    try {
        FileInputStream in = new FileInputStream(new File(filePath));
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] buffer = new byte[2048];
        int length;
        while ((length = in.read(buffer)) != -1) {
            md.update(buffer, 0, length);
        }
        byte[] b = md.digest();
        return byteToHexString(b);
    } catch (Exception ex) {
        Logger.e(TAG, ex);
        return null;
    } finally {
        if(in != null){
            in.Close();
        }
    }
}

在生成MD5字符串时,使用了BYTES -> HEX 的算法:

/**
* 把byte[]数组转换成十六进制字符串表示形式
* @param tmp 要转换的byte[]
* @return 十六进制字符串表示形式
*/
public static String byteToHexString(byte[] tmp) {
    char[] str = new char[(16 << 1)];
    int k = 0;
    for (int i = 0; i < 16; i++) {
        byte byte0 = tmp[i];
        str[k++] = hexDigits[byte0 >>> 4 & 0xf];
        str[k++] = hexDigits[byte0 & 0xf];
    }
    return new String(str);
}
 最新代码
Android执行Shell 3年以前  |  1676次阅读
使用RxJava 2.0 3年以前  |  655次阅读
获取带虚拟按键手机的屏幕分辨率 3年以前  |  338次阅读
onReceivedSslError避免谷歌安全警告 3年以前  |  431次阅读
intent传递数据 3年以前  |  249次阅读
显式Intent和隐式Intent 3年以前  |  272次阅读
防止暂停的Activity回收后数据丢失 3年以前  |  308次阅读
发送广播 3年以前  |  260次阅读
广播接收器,拦截广播 3年以前  |  129次阅读
接收音量变化的广播信号 3年以前  |  190次阅读
 最受欢迎代码
将二进制数据转为16进制以便显示 4年以前  |  2360次阅读
获取IMSI 4年以前  |  2323次阅读
获取IMEI 4年以前  |  2200次阅读
Java生成UUID 4年以前  |  2200次阅读
指定应用ID以获取对应的应用名称 4年以前  |  1842次阅读
Android执行Shell 3年以前  |  1676次阅读
在Android中使用Java复制文件 4年以前  |  1613次阅读
Bitmap对象保存到本地 4年以前  |  1601次阅读
判断一个地址是否是HTTP地址 4年以前  |  1554次阅读
获取应用自己的名称与版本 4年以前  |  1333次阅读