Mi sono interessato al caso e, partendo da quel gruppo di funzioni, ho creato una piccola classe:

codice:
import java.security.*;
import java.io.*;

class md5
{
  public String hash;

  private String hex(byte[] array)
  {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < array.length; i++)
    {
      sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toLowerCase().substring(1,3));
    }
    return sb.toString();
  }

  public md5 (String message)
  {
    try
    {
      MessageDigest md = MessageDigest.getInstance("MD5");
      hash = hex (md.digest(message.getBytes("CP1252")));
    }
    catch (NoSuchAlgorithmException e) {}
    catch (UnsupportedEncodingException e) {}
  }
}

Usarla, semplice:

codice:
md5 nome_oggetto = new md5("Stringa");
oppure

codice:
md5 nome_oggetto;

try
{
  nome_oggetto = new md5("Stringa");
}
catch (Exception e) { //gestisci l'errore }

in entrambi i casi fai nome_oggetto.hash per pigliarti l'hash generato dal costruttore