diff --git a/components/net/sf/briar/protocol/AuthorFactoryImpl.java b/components/net/sf/briar/protocol/AuthorFactoryImpl.java
index 15d1f6f1da2e0e4d7d6037ea38db9769d832b460..ef504758ee2480438f04221a37cf54e96ddf6987 100644
--- a/components/net/sf/briar/protocol/AuthorFactoryImpl.java
+++ b/components/net/sf/briar/protocol/AuthorFactoryImpl.java
@@ -33,7 +33,6 @@ class AuthorFactoryImpl implements AuthorFactory {
 		w.writeString(name);
 		w.writeBytes(publicKey);
 		MessageDigest messageDigest = crypto.getMessageDigest();
-		messageDigest.reset();
 		messageDigest.update(out.toByteArray());
 		AuthorId id = new AuthorId(messageDigest.digest());
 		return new AuthorImpl(id, name, publicKey);
diff --git a/components/net/sf/briar/protocol/AuthorReader.java b/components/net/sf/briar/protocol/AuthorReader.java
index b81d5b4f2ff5dd46a932960804dd2f114a2f4896..c59a1028d20faa95b621d569847e331366ebface 100644
--- a/components/net/sf/briar/protocol/AuthorReader.java
+++ b/components/net/sf/briar/protocol/AuthorReader.java
@@ -26,7 +26,6 @@ class AuthorReader implements ObjectReader<Author> {
 	public Author readObject(Reader r) throws IOException {
 		// Initialise the consumer
 		DigestingConsumer digesting = new DigestingConsumer(messageDigest);
-		messageDigest.reset();
 		// Read and digest the data
 		r.addConsumer(digesting);
 		r.readStructId(Types.AUTHOR);
diff --git a/components/net/sf/briar/protocol/BatchReader.java b/components/net/sf/briar/protocol/BatchReader.java
index de7f5e31e4effe45b7797e5e97a29d11e9d3fa73..4864d6121a7dfb96fd88d17b12e3f28baf85e7f1 100644
--- a/components/net/sf/briar/protocol/BatchReader.java
+++ b/components/net/sf/briar/protocol/BatchReader.java
@@ -35,7 +35,6 @@ class BatchReader implements ObjectReader<UnverifiedBatch> {
 		Consumer counting =
 			new CountingConsumer(ProtocolConstants.MAX_PACKET_LENGTH);
 		DigestingConsumer digesting = new DigestingConsumer(messageDigest);
-		messageDigest.reset();
 		// Read and digest the data
 		r.addConsumer(counting);
 		r.addConsumer(digesting);
diff --git a/components/net/sf/briar/protocol/GroupFactoryImpl.java b/components/net/sf/briar/protocol/GroupFactoryImpl.java
index 839e138ef7233caefb250ddc9f0ed19f68c2ab4d..ccd719bd7066b1dc43792e22df858631978a9800 100644
--- a/components/net/sf/briar/protocol/GroupFactoryImpl.java
+++ b/components/net/sf/briar/protocol/GroupFactoryImpl.java
@@ -33,7 +33,6 @@ class GroupFactoryImpl implements GroupFactory {
 		if(publicKey == null) w.writeNull();
 		else w.writeBytes(publicKey);
 		MessageDigest messageDigest = crypto.getMessageDigest();
-		messageDigest.reset();
 		messageDigest.update(out.toByteArray());
 		GroupId id = new GroupId(messageDigest.digest());
 		return new GroupImpl(id, name, publicKey);
diff --git a/components/net/sf/briar/protocol/GroupReader.java b/components/net/sf/briar/protocol/GroupReader.java
index b076ab81fe1e3530ba25c6f08108d038807ff4e1..74f24c36eb7460ef86a45475897285f511a15f7c 100644
--- a/components/net/sf/briar/protocol/GroupReader.java
+++ b/components/net/sf/briar/protocol/GroupReader.java
@@ -26,7 +26,6 @@ class GroupReader implements ObjectReader<Group> {
 	public Group readObject(Reader r) throws IOException {
 		// Initialise the consumer
 		DigestingConsumer digesting = new DigestingConsumer(messageDigest);
-		messageDigest.reset();
 		// Read and digest the data
 		r.addConsumer(digesting);
 		r.readStructId(Types.GROUP);
diff --git a/test/net/sf/briar/protocol/BatchReaderTest.java b/test/net/sf/briar/protocol/BatchReaderTest.java
index 6ff7bfeceec6c338a57bbfe3b8f0b09291bb4277..f24722a1ff3e9e04cc84f04e699f7902f52f2f0f 100644
--- a/test/net/sf/briar/protocol/BatchReaderTest.java
+++ b/test/net/sf/briar/protocol/BatchReaderTest.java
@@ -96,7 +96,6 @@ public class BatchReaderTest extends TestCase {
 		byte[] b = createBatch(ProtocolConstants.MAX_PACKET_LENGTH);
 		// Calculate the expected batch ID
 		MessageDigest messageDigest = crypto.getMessageDigest();
-		messageDigest.reset();
 		messageDigest.update(b);
 		final BatchId id = new BatchId(messageDigest.digest());
 
diff --git a/test/net/sf/briar/protocol/ConsumersTest.java b/test/net/sf/briar/protocol/ConsumersTest.java
index 4c09535a779c9562d1ef0fd55e74c4e16adb726e..e09595edfa3dab377470ae8822059efd37c39c33 100644
--- a/test/net/sf/briar/protocol/ConsumersTest.java
+++ b/test/net/sf/briar/protocol/ConsumersTest.java
@@ -31,15 +31,13 @@ public class ConsumersTest extends TestCase {
 
 	@Test
 	public void testDigestingConsumer() throws Exception {
-		MessageDigest messageDigest = crypto.getMessageDigest();
 		byte[] data = new byte[1234];
 		// Generate some random data and digest it
 		new Random().nextBytes(data);
-		messageDigest.reset();
+		MessageDigest messageDigest = crypto.getMessageDigest();
 		messageDigest.update(data);
 		byte[] dig = messageDigest.digest();
 		// Check that feeding a DigestingConsumer generates the same digest
-		messageDigest.reset();
 		DigestingConsumer dc = new DigestingConsumer(messageDigest);
 		dc.write(data[0]);
 		dc.write(data, 1, data.length - 2);