package com.bizosys.hsearch.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.apache.log4j.Logger; /** * Does MD5 hashing * @author karan * */ public class Hash { private static Logger LOG = Logger.getLogger(Hash.class); private static final char[] hexChars = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; public static String createHex(String key, String value ) { MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException ex) { LOG.fatal("MD5 Hash package is not loaded"); throw new RuntimeException("MD5 Hash package is not loaded", ex); } if ( LOG.isDebugEnabled()) { //LOG.debug("key Length =" + key.length() + " and value=" + value); } md5.update(key.getBytes()); md5.update(value.getBytes()); byte[] contextDigest = md5.digest(); StringBuffer buffer = new StringBuffer(); hexStringFromBytes(contextDigest,buffer); return buffer.toString(); } private static void hexStringFromBytes(byte[] b, StringBuffer hex) { int msb; int lsb = 0; int i; // MSB maps to idx 0 for (i = 0; i < b.length; i++) { msb = ((int)b[i] & 0x000000FF) / 16; lsb = ((int)b[i] & 0x000000FF) % 16; hex.append(hexChars[msb]).append(hexChars[lsb]); } } }