Qualcosa nella parte posteriore della mia testa mi sta dicendo che mi manca qualcosa di ovvio qui.MessageDigest MD5 Algorithm non restituisce quello che mi aspetto
Sto integrando un progetto java esistente con una API di terze parti che utilizza un hash md5 di una chiave API per l'autenticazione. Non funziona per me, e durante il debug mi sono reso conto che gli hash che sto generando non corrispondono agli esempi che hanno fornito. Ho trovato alcuni siti Web che creano hash MD5 dalle stringhe per controllare i loro esempi e, per quanto posso dire, ho sbagliato e hanno ragione.
ad esempio, in base allo this website, la stringa "ciao" genera un hash di "5d41402abc4b2a76b9719d911017c592". (FWIW Non so nulla su questo sito web, tranne che sembra correttamente hash gli esempi che ho). Quando eseguo attraverso il mio codice ottengo:
XUFAKrxLKna5cZ2REBfFkg ==
Ecco il semplice metodo che sto utilizzando per generare l'hash md5/string .:
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());
}
ho usato molto metodo simile per autenticare con successo un'API diversa usando l'algoritmo SHA1 la settimana scorsa. Mi chiedo se il problema è legato a org.apache.commons.net.util.Base64.encodeBase64String ... Qualsiasi aiuto è molto apprezzato, se solo alcuni test per vedere se il byteArray è corretto ma la stringa convertita è sbagliata .
md.digest() dovrebbe contenere byte che stai cercando, li codifichi ulteriormente utilizzando l'algoritmo Base64 e ottieni risultati diversi – hoaz
Ho bisogno di convertire quei byte in una stringa per una richiesta http, c'è un modo migliore per farlo ? – eric
new String (byte [] bytes) – Andy