code: public static String md5(String str) {
  		if (str == null) {
  			return "";  //$NON-NLS-1$
  		}
  		final byte[] uniqueKey = str.getBytes();
  		byte[] hash = null;
  
  		try {
  			hash = MessageDigest.getInstance("MD5").digest(uniqueKey); //$NON-NLS-1$
  		} catch (NoSuchAlgorithmException e) {
  			throw new Error(Locale.getString("NO_MD5")); //$NON-NLS-1$
  		}
  
  		final StringBuilder hashString = new StringBuilder();
  
  		for (int i = 0; i < hash.length; ++i) {
  			final String hex = Integer.toHexString(hash[i]);
  			if (hex.length() == 1) {
  				hashString.append('0');
  				hashString.append(hex.charAt(hex.length() - 1));
  			} else {
  				hashString.append(hex.substring(hex.length() - 2));
  			}
  		}
  		return hashString.toString();
  	}
docs: Replies a MD5 key.
  
  <p>MD5 was developed by Professor Ronald L. Rivest in 1994.
  Its 128 bit (16 byte) message digest makes it a
  faster implementation than SHA-1.
  
  <p>The fingerprint (message digest) is
  non-reversable.... your data cannot be retrieved from
  the message digest, yet as stated earlier,
  the digest uniquely identifies the data.
  
  @param str is the string to encrypt.
  @return the MD5 encryption of the string <var>str</var>