Copy directly into buffer without intermediate buffer

This commit is contained in:
dev
2015-04-04 02:27:24 +00:00
parent ddc3ef8db3
commit 0c90162e20

View File

@ -2,6 +2,7 @@ package net.i2p.crypto;
import gnu.crypto.hash.Sha256Standalone;
import java.security.DigestException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.LinkedBlockingQueue;
@ -20,6 +21,7 @@ public final class SHA256Generator {
private final LinkedBlockingQueue<MessageDigest> _digests;
private static final boolean _useGnu;
static {
boolean useGnu = false;
try {
@ -53,13 +55,13 @@ public final class SHA256Generator {
/**
* Calculate the hash and cache the result.
* @param source what to hash
*/
public final Hash calculateHash(byte[] source, int start, int len) {
MessageDigest digest = acquire();
digest.update(source, start, len);
byte rv[] = digest.digest();
release(digest);
//return new Hash(rv);
return Hash.create(rv);
}
@ -71,9 +73,12 @@ public final class SHA256Generator {
public final void calculateHash(byte[] source, int start, int len, byte out[], int outOffset) {
MessageDigest digest = acquire();
digest.update(source, start, len);
byte rv[] = digest.digest();
try {
digest.digest(out, outOffset, Hash.HASH_LENGTH);
} catch (DigestException e) {
throw new RuntimeException(e);
}
release(digest);
System.arraycopy(rv, 0, out, outOffset, rv.length);
}
private MessageDigest acquire() {