簡體   English   中英

大型文件的Hmac MD5

[英]Hmac MD5 of a large file

我正在使用用BufferedInputStream包裹的FileInputStream讀取字節塊中的大文件。

public void MD5(BufferedInputStream in, Key pubKey) throws Exception{

        Mac md = Mac.getInstance("HmacMD5");
            md.init(pubKey);
            byte[] contents = new byte[1024];
            int readSize;
            while ((readSize = in.read(contents)) != -1) {
                {
                    md.update(contents,0,readSize);
                }
                byte[] hashValue = md.doFinal();

            }
}

對於一個小文件來說,它工作得很好,但是對於200MB的文件卻要花費大量的時間

當我嘗試使用SHA256withRSA簽名200MB文件時,相同的方法也可以很好地工作。

有什么具體原因嗎? 我覺得這與md.update()有關。

但是我在使用“簽名”時也使用了相同的功能。

任何幫助,將不勝感激。

您正在while循環中調用doFinal 看起來不對。 請嘗試以下操作:

public void MD5(BufferedInputStream in, Key pubKey) throws Exception{
    Mac md = Mac.getInstance("HmacMD5");
    md.init(pubKey);
    byte[] contents = new byte[1024];
    int readSize;
    while ((readSize = in.read(contents)) != -1) {
        md.update(contents, 0, readSize);
    }
    byte[] hashValue = md.doFinal();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM