Originariamente inviato da c0der
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.
io onestamente mi sono fermata prima, perché non sono sicurissima che la trasformazione che fa da stringa a byte sia corretta (sempre perché non sono sicura del contenuto logico della stringa di partenza).

Poi per averne una versione stampabile torni a dover passare per il base64...insomma mi sono focalizzata sul primo errore, nemmeno il passaggio che hai fatto tu è corretto, perché BigInteger suppone che MD5 sia un numero e in generale non è vero (è un array di byte, diverso da dire che quell'array rappresenta un valore intero).