Ciao a tutti!
Sto facendo una prova in java...voglio calcolare l'md5 di una stringa di caratteri:
Ora, se uso caratteri "normali" (simboli, numeri e lettere) tutto ok...ma se, come in questo caso uso caratteri tipo NULL, GS, DC1 etc etc mi restituisce un hash sbagliato. Per esempio il codice postato sopra mi restituisce in output:codice:import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class md5 { public static void main(String[] args) { int [] id = {0, 29, 49, 50, 51, 17}; String hex_char = ""; int i =0; while (i != 6){ hex_char += (char)id[i]; i++; } String sessionid = hex_char; byte[] defaultBytes = sessionid.getBytes(); try{ MessageDigest algorithm = MessageDigest.getInstance("MD5"); algorithm.reset(); algorithm.update(defaultBytes); byte messageDigest[] = algorithm.digest(); StringBuffer hexString = new StringBuffer(); for (i=0;i<messageDigest.length;i++) { hexString.append(Integer.toHexString(0xFF & messageDigest[i])); } String foo = messageDigest.toString(); System.out.println("md5: "+hexString.toString() + " (" + hexString.toString().length() + ")"); sessionid=hexString+""; } catch(NoSuchAlgorithmException nsae){ } } }
quindi addirittura ottengo un md5 di 29 caratteri e non di 32...codice:md5: 891fb11b23301a9664dcaf92e1e7f (29)
Dove sbaglio?![]()

Rispondi quotando


