[英]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.