2010-06-26 17 views
6

No puedo entender lo que estoy haciendo mal aquí. Tengo el siguiente código:MessageDigest SHA-512 diferente 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 cuanto a los valores hexadecimales de digerir byte [] en el depurador de NetBeans, se nota algo diferente a la salida de:

echo "myString" | openssl dgst -sha512 

supongo que es una problema de codificación de caracteres, pero ¿JVM y openssl no usan el juego de caracteres predeterminado para la máquina?

Cualquier ayuda es apreciada.

+0

Las codificaciones de caracteres no deberían ser un problema para '" myString "', ya que eso es puro ASCII. Pero es posible que desee examinar el valor de retorno de 'myString.getBytes()' solo para asegurarse. –

Respuesta

7

echo añade una nueva línea al final -

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

Trate echo -n?

+2

¡Eso fue todo! ¡Eres un bash ninja! Gracias. – Tim

+0

¡Eso también me ha hecho tropezar! – jpswain