1

Sip Register をしようとしていますが、サーバーからチャレンジを受けます。

そのため、nonce で MD5 アルゴリズムを使用し、それをサーバーに送信して認証する必要があります。

MD5 暗号化の 2 つの例に出くわし、両方を試してみましたが、それぞれ異なる文字列が返されるので、どちらを使用するのが正しいのか疑問に思っていました。

前もって感謝します

編集:

コモンズコーデックに感謝します。

サーバーから返されたノンス値をユーザー名とパスワードでエンコードして送り返す必要があるため、編集しました。

したがって、これは SIP 登録のエンコーディングの特定のタイプです。これを行う方法に関するチュートリアルを誰かが指摘できますか? それとも何かヒントはありますか?

4

2 に答える 2

2

どちらも正しくありません。バイト配列から16進文字列への変換は壊れています。ASFのhttp://commons.apache.org/codec/を使用することを強くお勧めします。これにより、次のことが可能になります。

Hex.encodeHexString(yourByteArray);

ただし、commons-codecを使用している場合は、次のこともできます。

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

これで完了です。きちんとね。:-)

于 2010-02-09T16:48:39.660 に答える
1

最初のものの明らかな問題の 1 つは、16 進文字列を間違った方法で生成することです。のいずれかの値messageDigestが 16 未満の場合、A2 桁の文字列 ( ) ではなく、1 桁の 16 進文字列 (たとえば ) を生成します0A

于 2010-02-09T16:45:34.577 に答える