package com.rubiconproject.oss.kv.distributed.hashing;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5HashAlgorithm implements HashAlgorithm {
public long hash(final String key) {
byte[] bytes = md5(key);
long l = 0;
for (int i = 0; i < 8; i++) {
l <<= 8;
l ^= (long) bytes[i] & 0xFF;
}
return l;
}
private byte[] md5(final String key) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.reset();
md5.update(key.getBytes());
byte[] bytes = md5.digest();
return bytes;
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException("Cannot find MD5 message digest!");
}
}
}