2017-07-17 58 views
1

HMAC-MD5エンコードされたパラメータをフォームに渡していますが、ベンダがそれを無効として返すようになっています。しかし、それは文字の大文字を除いて、彼らのハッシュジェネレータが私に与えるものと一致します。私はこれを回避するために、lcaseコマンドを使用しました。これが後で私にトラブルを引き起こすかどうかは疑問だ。 Coldfusionは、大文字でハッシュされた文字列を生成します。ベンダーは常に小文字を使用します。それは常にどちらか他のものか、それとも今まで混合されていますか?あなたは、上下両方のケースのバージョンを予想する必要がありますので、F範囲 - 9a - - fAMD5ハッシュは常に大文字か小文字かですか?

+0

なぜこの質問をしていますか?何のためにそれが必要ですか? – Christian

+0

私が言ったように、私のハッシュは単に手紙のケーシングのためにベンダーと一致しません。彼らは認証のためにそれを使用します。 –

+0

もし彼らが過去に生きているものにMD5を使っているのであれば。場合によっては、私はそれに答えようとしました。 – tadman

答えて

1

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

これらのバイトは扱いにくいため、文字列にがコード化されています。 MD5の場合、通常は32小文字の16進数にエンコードされるため、すべてのバイトは2文字で表されます。

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

0

16進数文字列は0には何も含めることができます。

あなたが本当に強く思っている2つのシステム間のインターフェースを試みている場合は、要件に応じて大文字または小文字を強制してください。

+0

a-fとA-Fは同じものではありませんか? MD5は16進数で、0-9とa-fを意味しますが、A-Fは意味しません。そうであれば、どちらも同じことです。 – Christian

+0

@Christian彼らはそうすべきですが、いくつかのレガシーソフトウェアは非常にカンタンです。 – tadman

+0

いくつかの(疑わしい)システムでは、追加のステップでMD5を暗号化またはエンコードし、最終出力に関連するケースを作成します。矛盾を避けるために、常に文書化された/推奨された方法に従ってください。 – Alex

関連する問題