2012-08-09 15 views
6

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

+1

[SHA256の出力形式は何ですか](http://stackoverflow.com/questions/6532606/what-is-the-output-format-of-sha256) –

答えて

14

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

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

アルゴリズム自体は、ほとんど間違いなく、大文字と小文字が区別されます。

0

すべてSHAシリーズは、大文字小文字については何も知らないバイナリアルゴリズムなので、大文字と小文字を区別することはできません。
異なる文字列の2つの出力を1つのマシンでテストするだけで、異なる結果が得られることがわかります。あなたのケースで
は、私はすべてのものがOKであれば、おそらくiOS搭載の携帯電話での大文字の文字列を表示すると思いますが、内部的に、あなたは通常(小文字)

2

ませまともな暗号ハッシュ関数は、大文字と小文字が区別されない文字列を渡し、それがあろうから衝突を生成するのがはるかに簡単です。出力は別の問題です。これは基本的には大きいので(ケーシングは適用されません)、便宜上、ベース16に、すなわちa〜fの文字を追加の数字として使用します。 16進表記法は実際には大文字小文字を区別しません。また、少なくとも大文字と小文字の両方の変形が共通して認識されます。それは重要ではなく、表現される数字を変更しません。

2

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

関連する問題