2009-10-20 2 views
1

Реализация Java создает два разных дайджеста для одной и той же входной строки, если я запускаю автономное приложение или запускаю внутри веб-приложения.Проблема с хешем MD5 с Java

Автономное приложение совпадает с СУБД Oracle Реализация является

MessageDigest md5 = MessageDigest.getInstance("MD5"); 

    if (md5 != null) { 
     md5.reset(); 
     newHashByte = md5.digest(msg.getBytes()); 
    } 

    newHash = convertToString(newHashByte); 

Hex для осуществления преобразования струна

StringBuffer result = new StringBuffer(64); 

for (int i = 0; i < digestBits.length; i++) 
    hexDigit(result, digestBits[i]); 

return result.toString(); 

Очень признателен, если вы могли бы помочь нам разрешения этого.

ответ

2

Где msg приходят из в каждом случае? Я думаю, что в одном случае у вас есть символ новой строки, но не другой. Также возможно, что ваши кодировки символов установлены по-разному в двух сценариях. Я очень сомневаюсь, что что-то еще в вашем примере меняется, кроме msg.

7

Я подозреваю, что у вас разные кодировки по умолчанию. Используйте правильную кодировку следующим образом:

newHashByte = md5.digest(msg.getBytes("utf-8")); 
Смежные вопросы