JAVA獲取MD5的正確方式

因為項目原因,發(fā)現同事寫的代碼獲取的MD5值少了一位。MD5是32個數字的,然后...

百度搜索出來的文章前面幾個獲取MD5的方法都存在一個問.題

md5字符串最前面的數字是0的,轉成字符串后會省略。
然后我搜“android獲取MD5值”出來的第一篇文章也有同樣問題??赡苓\氣問題,這MD5值第一位不一定為0,也就沒人發(fā)現這個問題了。

正確姿勢

我直接上代碼了

 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;
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容