MessageDigest MD5

Status
Nicht offen für weitere Antworten.

foobar

Top Contributor
Ich habe in einem anderen Forum folgenden Code gefunden:
Code:
private static String hex(byte[] array) 
{        
	StringBuffer sb = new StringBuffer();        
	for (int i = 0; i < array.length; ++i) 
	{            
		sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toUpperCase().substring(1,3));        
	}        
	return sb.toString();    
}    
	
public static String md5 (String message) 
{         
	try 
	{             
		MessageDigest md = MessageDigest.getInstance("MD5");             
		return hex (md.digest(message.getBytes("CP1252")));         
	} 
	catch (NoSuchAlgorithmException e) { } 
	catch (UnsupportedEncodingException e) {}         
	return null;    
}

Das funktioniert auch wunderbar, aber ich verstehe den Code nicht ganz. Warum wird jedes byte mit 0xFF verundet und danach mit 0x100 verodert? Ich glaube diese Berechnungen werden durchgeführt um immer eine konstante Stringlänge zu erreichen. Kann mir das jemand etwas genauer erklären?
Danke im vorraus
 

Grizzly

Top Contributor
Wobei ich das nicht ganz verstehe: Wenn Du den Wert mit 0xFF bitweise Und verknüpfst, dürfte nur noch Werte bis maximal 0xFF am Ende herauskommen. Wenn ich das mit 0x100 bitweise Oder verknüpfe, dürfte sich der Wert nicht ändern. ???:L
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben