Ciao a tutti!
Sto facendo una prova in java...voglio calcolare l'md5 di una stringa di caratteri:
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){ } 
}
 }
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:
md5: 891fb11b23301a9664dcaf92e1e7f (29)
quindi addirittura ottengo un md5 di 29 caratteri e non di 32...

Dove sbaglio?