[freenet-cvs] r19741 - branches/saltedhashstore/freenet/src/freenet/store

j16sdiz at freenetproject.org j16sdiz at freenetproject.org
Sun May 4 13:14:39 UTC 2008


Author: j16sdiz
Date: 2008-05-04 13:14:39 +0000 (Sun, 04 May 2008)
New Revision: 19741

Modified:
   branches/saltedhashstore/freenet/src/freenet/store/SaltedHashFreenetStore.java
Log:
use SHA-256 for digested key


Modified: branches/saltedhashstore/freenet/src/freenet/store/SaltedHashFreenetStore.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/store/SaltedHashFreenetStore.java	2008-05-04 13:14:19 UTC (rev 19740)
+++ branches/saltedhashstore/freenet/src/freenet/store/SaltedHashFreenetStore.java	2008-05-04 13:14:39 UTC (rev 19741)
@@ -9,6 +9,7 @@
 import java.io.RandomAccessFile;
 import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
+import java.security.MessageDigest;
 import java.text.DecimalFormat;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -17,6 +18,7 @@
 
 import freenet.crypt.Digest;
 import freenet.crypt.SHA1;
+import freenet.crypt.SHA256;
 import freenet.keys.KeyVerifyException;
 import freenet.node.SemiOrderedShutdownHook;
 import freenet.support.HexUtil;
@@ -824,19 +826,18 @@
 	 */
 	// TODO use a little cache?
 	private byte[] getDigestedRoutingKey(byte[] routingKey) {
-		Digest digest = SHA1.getInstance();
-		digest.update(routingKey);
-		digest.update(salt);
+		MessageDigest digest = SHA256.getMessageDigest();
+		try {
+			digest.update(routingKey);
+			digest.update(salt);
 
-		byte[] digestedKey = digest.digest();
-		byte[] hashedRoutingKey = new byte[0x20];
+			byte[] hashedRoutingKey = digest.digest();
+			assert hashedRoutingKey.length == 0x20;
 
-		// SHA-1 is only 160-bits, must fill something on lower order bytes
-		System.arraycopy(digestedKey, 0, //
-		        hashedRoutingKey, hashedRoutingKey.length - digestedKey.length,//
-		        digestedKey.length);
-
-		return hashedRoutingKey;
+			return hashedRoutingKey;
+		} finally {
+			SHA256.returnMessageDigest(digest);
+		}
 	}
 
 	/**
@@ -847,7 +848,7 @@
 	 * @return
 	 */
 	public long getOffsetFromPlainKey(byte[] plainKey, long storeSize) {
-		return getOffsetFromPlainKey(getDigestedRoutingKey(plainKey), storeSize);
+		return getOffsetFromDigestedKey(getDigestedRoutingKey(plainKey), storeSize);
 	}
 
 	/**




More information about the cvs mailing list