C'è stata un po' di confusione in questo thread credo.
L'op voleva solo sapere come ottenere una stringa stampabile per un md5.
Da che mondo e mondo si stampano i 16 bytes dell'md5 in esadecimale, ottenendo quindi una stringa di 32 caratteri.
Un modo semplice e sbrigativo è sostiture la riga:
return new String(md5);
con
return String.format("%032x", new BigInteger(1, md5));
(importa java.math.BigInteger)
Ciao.