JAVA獲取MD5的正確方式

因?yàn)轫?xiàng)目原因,發(fā)現(xiàn)同事寫(xiě)的代碼獲取的MD5值少了一位。MD5是32個(gè)數(shù)字的,然后...

百度搜索出來(lái)的文章前面幾個(gè)獲取MD5的方法都存在一個(gè)問(wèn).題

md5字符串最前面的數(shù)字是0的,轉(zhuǎn)成字符串后會(huì)省略。
然后我搜“android獲取MD5值”出來(lái)的第一篇文章也有同樣問(wèn)題??赡苓\(yùn)氣問(wèn)題,這MD5值第一位不一定為0,也就沒(méi)人發(fā)現(xiàn)這個(gè)問(wèn)題了。

正確姿勢(shì)

我直接上代碼了

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

友情鏈接更多精彩內(nèi)容