アプリケーションの2つの側面でSHA-256を使用しているサービスを実行しています。1つはサーバー側のPHP実装で、もう1つはクライアント側のiOS実装です。両側でアルゴリズムを使用した結果は、すべての文字がiOSで大文字になり、PHPで小文字になることを除いて、同じ英数字の文字列になります。それらが同一の英数字の文字列であるという事実から、SHA-256では大文字と小文字が区別されないと思いますが、私の仮定を裏付けるドキュメントは見つかりません。誰かがこれを確認するためのドキュメントを見せてもらえますか?
4 に答える
16進文字列出力を参照している場合は、そうです。大文字と小文字は区別されません。これは、バイナリデータのテキスト表現です。
http://en.wikipedia.org/wiki/Hexadecimal
アルゴリズム自体は間違いなく大文字と小文字を区別します。
適切な暗号化ハッシュ関数では、大文字と小文字が区別されません。これにより、衝突が発生しやすくなります。出力は別の問題です。基本的には大きな数ですが(したがって、ケーシングは適用されません)、便宜上、基数16で示されます。つまり、aからfまでの文字を追加の数字として使用します。16進表記は実際に大文字と小文字を区別しないか、少なくとも大文字と小文字の両方のバリアントが一般的であり、認識されています。それは問題ではなく、どの番号が表されるかを変更しません。
入力のバイナリ表現が両側で同じである場合、ハッシュ値のバイナリ表現は同じになります。16進数は大文字と小文字を区別しません。
すべてのSHA
シリーズは、大文字と小文字を区別しないバイナリアルゴリズムであるため、大文字と小文字を区別することはできません。
ケースが異なる1つの文字列からの2つの出力を使用して、単一のマシンでこれをテストするだけで、異なる結果が得られることがわかります。
あなたの場合、すべてが大丈夫なら、おそらくiOSは電話に大文字の文字列を表示しますが、内部的には通常の(小文字の)文字列を渡します