2010-06-26 10 views
6

Ich kann nicht herausfinden, was ich hier falsch mache. Ich habe den folgenden Code:MessageDigest SHA-512 anders als openssl

byte[] digest = new byte[0]; 
MessageDigest md = null; 
try{ 
    md = MessageDigest.getInstance("SHA-512"); 
} 
catch(NoSuchAlgorithmException e) { 
    return digest; 
} 
digest = md.digest(myString.getBytes()); 

an dem Hex-Wert der Suche von byte [] in den NetBeans-Debugger verdauen, zeigt es etwas anderes als die Ausgabe von:

echo "myString" | openssl dgst -sha512 

Ich vermute, es ist ein Zeichencodierungsproblem, aber verwenden die JVM und openssl nicht den Standardzeichensatz für die Maschine?

Jede Hilfe wird geschätzt.

+0

Zeichenkodierungen sollten kein Problem für "myString" sein, da das reine ASCII ist. Vielleicht möchten Sie aber den Rückgabewert von 'myString.getBytes()' überprüfen, nur um sicherzugehen. –

Antwort

7

echo anhängt eine neue Zeile am Ende -

[[email protected]:~]% echo "myString" | hexdump -C 
00000000 6d 79 53 74 72 69 6e 67 0a      |myString.| 

echo -n Versuchen?

+2

Das war es! Du bist ein Bash Ninja! Danke. – Tim

+0

Das hat mich schon früher gestolpert! – jpswain