2010-06-26 4 views
6

Я не могу понять, что я делаю неправильно здесь. У меня есть следующий код:MessageDigest SHA-512 отличается от 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()); 

Глядя на шестигранных значений дайджеста байт [] в отладчике NetBeans, он показывает что-то другое, чем на выходе:

echo "myString" | openssl dgst -sha512 

Я предполагаю, что это проблема кодирования символов, но не поддерживает ли JVM и openssl набор символов по умолчанию для машины?

Любая помощь приветствуется.

+0

Кодировка символов не должна быть проблемой для '' myString'', поскольку это чистый ASCII. Но вы можете проверить возвращаемое значение 'myString.getBytes()', чтобы убедиться. –

ответ

7

echo добавляет символ новой строки в конце -

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

Try echo -n?

+2

Вот и все! Вы ниндзя bash! Спасибо. – Tim

+0

Это тоже помогло мне! – jpswain