web-dev-qa-db-ja.com

MD5ハッシュは常に大文字か小文字のどちらですか?

HMAC-MD5エンコードされたパラメーターをフォームに渡していますが、ベンダーはそれを無効として返しています。ただし、文字の大文字の使用を除いて、ハッシュジェネレーターが提供するものと一致します。これを回避するために私が行ったのは、lcaseコマンドを使用することでした。これで後でトラブルが発生するのではないかと思います。 Coldfusionは大文字でハッシュされた文字列を生成します。ベンダーは常に小文字を使用しているようです。それは常にどちらか一方ですか、それとも混合されますか?

8

他のすべてのハッシュ関数はバイナリ出力を生成するため、MD5の場合、MD5は16バイトです。

これらのバイトは処理が難しいため、文字列に対してencodedになります。 MD5の場合、それらは通常32桁の小文字の16進数にエンコードされるため、各バイトは2文字で表されます。

ターゲットシステムが大文字または小文字のエンコーディングを受け入れるかどうか、またはその両方がシステム次第であるかどうかは、ハッシュ関数とは無関係です。どちらも同じMD5ハッシュの異なる表現です。したがって、質問に答えるには、ターゲットシステムが必要とするように出力をフォーマットします。

15
martinstoeckli

16進文字列は、0-9a-fA-Fの範囲なので、大文字と小文字の両方のバージョンを想定する必要があります。

2つの非常に意見の高いシステム間のインターフェースを作成しようとして本当に行き詰まっている場合は、要件に応じて大文字または小文字を強制します。

0
tadman