package com.facebook.hive.udf;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* Returns the MD5 hash of argument
*/
@Description(name = "udfMD5",
value = "_FUNC_(string) - MD5",
extended = "Example:\n"
+ " > SELECT MD5('hashme') FROM potato;\n")
public class UDFMD5 extends UDF {
public String evaluate(String message) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(message.getBytes());
byte[] message_digest = md.digest();
BigInteger msg_int = new BigInteger(1, message_digest);
String hash_string = msg_int.toString(16);
while(hash_string.length() < 32) {
// pre-pend with zeros if necessary
hash_string = "0"+hash_string;
}
return hash_string;
} catch (NoSuchAlgorithmException e) {
// If MD5 is not available
return null;
} catch (NullPointerException e) {
// If input is null
return null;
}
}
}