El algoritmo MD5 de MessageDigest no devuelve lo que espero

Algo en la parte posterior de mi cabeza me dice que me estoy perdiendo algo obvio aquí.

Estoy integrando un proyecto java existente con una api de terceros que usa un hash md5 de una clave api para la autenticación. No me funciona, y durante la depuración me di cuenta de que los hashes que estoy generando no coinciden con los ejemplos que han proporcionado. He encontrado algunos sitios web que crean hashes MD5 a partir de cadenas para comprobar sus ejemplos, y hasta donde puedo decir que estoy equivocado y tienen razón.

por ejemplo, de acuerdo aeste sitio web, la cadena "hola" genera un hash de "5d41402abc4b2a76b9719d911017c592". (FWIW No sé nada acerca de este sitio web, excepto que parece contener correctamente los ejemplos que tengo). Cuando lo ejecuto a través de mi código obtengo:

XUFAKrxLKna5cZ2REBfFkg ==

Aquí está el método simple que estoy usando para generar el hash / string md5.

private String md5(String md5Me) throws Exception {
    MessageDigest md = MessageDigest.getInstance("MD5");
    md.reset();
    md.update(md5Me.getBytes("UTF-8"));

    return Base64.encodeBase64String(md.digest());
}

Usé un método muy similar para autenticar con éxito una API diferente usando el algoritmo SHA1 la semana pasada. Me pregunto si el problema está relacionado con la org.apache.commons.net.util.Base64.encodeBase64String ... Cualquier ayuda es muy apreciada, solo algunas pruebas para ver si el byteArray es correcto pero la cadena convertida es incorrecta .

Respuestas a la pregunta(2)

Su respuesta a la pregunta