18

アプリケーションの2つの側面でSHA-256を使用しているサービスを実行しています。1つはサーバー側のPHP実装で、もう1つはクライアント側のiOS実装です。両側でアルゴリズムを使用した結果は、すべての文字がiOSで大文字になり、PHPで小文字になることを除いて、同じ英数字の文字列になります。それらが同一の英数字の文字列であるという事実から、SHA-256では大文字と小文字が区別されないと思いますが、私の仮定を裏付けるドキュメントは見つかりません。誰かがこれを確認するためのドキュメントを見せてもらえますか?

4

4 に答える 4

30

16進文字列出力を参照している場合は、そうです。大文字と小文字は区別されません。これは、バイナリデータのテキスト表現です。

http://en.wikipedia.org/wiki/Hexadecimal

アルゴリズム自体は間違いなく大文字と小文字を区別します。

于 2012-08-09T21:18:09.893 に答える
5

適切な暗号化ハッシュ関数では、大文字と小文字が区別されません。これにより、衝突が発生しやすくなります出力は別の問題です。基本的には大きな数ですが(したがって、ケーシングは適用されません)、便宜上、基数16で示されます。つまり、aからfまでの文字を追加の数字として使用します。16進表記は実際に大文字と小文字を区別しないか、少なくとも大文字と小文字の両方のバリアントが一般的であり、認識されています。それは問題ではなく、どの番号が表されるかを変更しません。

于 2012-08-09T21:20:16.290 に答える
4

入力のバイナリ表現が両側で同じである場合、ハッシュ値のバイナリ表現は同じになります。16進数は大文字と小文字を区別しません。

于 2012-08-09T21:20:46.783 に答える
1

すべてのSHAシリーズは、大文字と小文字を区別しないバイナリアルゴリズムであるため、大文字と小文字を区別することはできません。
ケースが異なる1つの文字列からの2つの出力を使用して、単一のマシンでこれをテストするだけで、異なる結果が得られることがわかります。
あなたの場合、すべてが大丈夫なら、おそらくiOSは電話に大文字の文字列を表示しますが、内部的には通常の(小文字の)文字列を渡します

于 2012-08-09T21:20:16.290 に答える