Author: j16sdiz
Date: 2008-07-10 14:24:34 +0000 (Thu, 10 Jul 2008)
New Revision: 21030
Modified:
branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
Log:
squeeze more hashes from SHA-256 for BloomFilter
Modified: branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
2008-07-10 13:45:09 UTC (rev 21029)
+++ branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
2008-07-10 14:24:34 UTC (rev 21030)
@@ -93,16 +93,16 @@
MessageDigest md = SHA256.getMessageDigest();
try {
- ByteBuffer bf = null;
+ byte[] lastDigest = key;
+ ByteBuffer bf = ByteBuffer.wrap(lastDigest);
for (int i = 0; i < k; i++) {
- if (bf == null || bf.remaining() < 8) {
- md.update(key);
- md.update((byte) i);
- bf = ByteBuffer.wrap(md.digest());
+ if (bf.remaining() < 4) {
+ lastDigest = md.digest(lastDigest);
+ bf = ByteBuffer.wrap(lastDigest);
}
- hashes[i] = (int) ((bf.getLong() &
Long.MAX_VALUE) % length);
+ hashes[i] = (int) ((bf.getInt() &
Long.MAX_VALUE) % length);
}
} finally {
SHA256.returnMessageDigest(md);