Android获取文件的MD5

什么是MD5

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3MD4

文件MD5的应用场景

(1)加密
(2)在下载更新APK的时候,与远程服务器的MD5进行匹配,如果下载下来新文件的MD5的与远程的MD5一致,说明下载过程中没有出现丢包。

如何获取文件的MD5

   private void getFile(){
        String path = Environment.getExternalStorageDirectory().getAbsolutePath();
        Log.d("ATG", path);
        File file = new File(path+"/e8706cf83a2cda33dae5c40025922d75.apk");
        String md5 = getFileMD5(file);
        Log.d("ATG", md5);
    }

    public static String getFileMD5(File file) {
        if (!file.isFile()) {
            return null;
        }
        MessageDigest digest = null;
        FileInputStream in = null;
        byte buffer[] = new byte[1024];
        int len;
        try {
            digest = MessageDigest.getInstance("MD5");
            in = new FileInputStream(file);
            while ((len = in.read(buffer, 0, 1024)) != -1) {
                digest.update(buffer, 0, len);
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return bytesToHexString(digest.digest());
    }

    public static String bytesToHexString(byte[] src) {
        StringBuilder stringBuilder = new StringBuilder("");
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }
    原文作者:右眼皮的爱
    原文地址: https://www.jianshu.com/p/d471bb6a9187
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞