Java MD5, какой из них является правильным? - PullRequest
1 голос
/ 09 февраля 2010

Я пытаюсь Sip Register и получаю запрос от сервера.

Поэтому мне нужно использовать алгоритм MD5 для одноразового номера, а затем отправить его на сервер для аутентификации.

Я сталкивался с двумя примерами шифрования MD5, и я попробовал оба, и каждый из них возвращает мне другую строку, поэтому мне было интересно, какой из них правильный?

Заранее спасибо

EDIT:

Хорошо, спасибо за общие кодеки.

Я отредактировал его, потому что мне нужно кодировать одноразовое значение, которое я получаю с сервера, используя свое имя пользователя и пароль, чтобы отправить его обратно.

Так что это особый тип кодировки для регистрации SIP, может кто-нибудь указать на учебник о том, как это сделать? Или есть какие-то намеки?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2010

Оба неверны. Ваше преобразование из байтового массива в шестнадцатеричную строку прервано. Я настоятельно рекомендую использовать http://commons.apache.org/codec/ от ASF, который может сделать это для вас:

Hex.encodeHexString(yourByteArray);

Но если вы используете обыкновенный кодек, вы также можете сделать это:

String sessionid = "1ddfdf99abfe5690dc1243875";
String md5HexString = DigestUtils.md5Hex(sessionid);

и все готово. Аккуратно, не правда ли? : -)

1 голос
/ 09 февраля 2010

Одна очевидная проблема с первым состоит в том, что вы производите шестнадцатеричную строку неправильно. Если любое значение в messageDigest меньше 16, то вместо двузначной (0A) вы получите шестнадцатеричную строку из одной цифры (например, A).

...