2010-06-26 29 views
6

Je n'arrive pas à comprendre ce que je fais de mal ici. J'ai le code suivant:MessageDigest SHA-512 différent de 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()); 

En regardant les valeurs hexadécimales de digérer octet [] dans le débogueur NetBeans, il montre quelque chose de différent que la sortie:

echo "myString" | openssl dgst -sha512 

Je devine que c'est un problème de codage de caractères, mais la JVM et openssl n'utilisent-ils pas le jeu de caractères par défaut pour la machine?

Toute aide est appréciée.

+0

Les encodages de caractères ne devraient pas être un problème pour '" myString "', car c'est du pur ASCII. Mais vous voudrez peut-être examiner la valeur de retour de 'myString.getBytes()' juste pour être sûr. –

Répondre

7

echo une nouvelle ligne à Ajoute la fin -

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

Essayez echo -n?

+2

C'était tout! Vous êtes un ninja bash! Merci. – Tim

+0

Cela m'a fait trébucher avant moi aussi! – jpswain