JAVA获取MD5的正确方式

作者: 聪葱忙忘 | 来源:发表于2020-06-03 10:29 被阅读0次

因为项目原因,发现同事写的代码获取的MD5值少了一位。MD5是32个数字的,然后...

百度搜索出来的文章前面几个获取MD5的方法都存在一个问.题

md5字符串最前面的数字是0的,转成字符串后会省略。
然后我搜“android获取MD5值”出来的第一篇文章也有同样问题。可能运气问题,这MD5值第一位不一定为0,也就没人发现这个问题了。

正确姿势

我直接上代码了

 public static String getFileMD5(File file) {
        if (!file.isFile())
            return null;
        InputStream fis = null;
        try {
            fis = new FileInputStream(file);

            byte[] buffer = new byte[1024];
            MessageDigest complete = MessageDigest.getInstance("MD5");
            int numRead;
            do {
                numRead = fis.read(buffer);
                if (numRead > 0) {
                    complete.update(buffer, 0, numRead);
                }
            } while (numRead != -1);
            fis.close();
            byte[] b = complete.digest();
            StringBuilder result = new StringBuilder();
            for (byte value : b) {
                result.append(Integer.toString((value & 0xff) + 0x100, 16).substring(1));
            }
            return result.toString();
        } catch (NoSuchAlgorithmException | IOException e) {
            e.printStackTrace();
        }finally {
            if(fis !=null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }

相关文章

网友评论

    本文标题:JAVA获取MD5的正确方式

    本文链接:https://www.haomeiwen.com/subject/fmjvzhtx.html