- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPとObjective-Cでハッシュが違う結果)
PHPとObjective-Cでハッシュが違う結果
このQ&Aのポイント
- PHPではhash_hmac関数を使用してSHA256のハッシュ値を取得できますが、Objective-Cでは自分で実装する必要があります。
- Objective-CでSHA256のハッシュ値を生成するためのコードは、参考にしたURLのページに記載されています。
- 質問者は同じ文字列を使ってPHPとObjective-Cの関数でSHA256のハッシュ値を出したところ、結果が違ってしまったため、どのようにすれば同じ結果を得られるか知りたいと思っています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ObjectiveCの方は見ていませんが、PHPで使うべき関数を間違えているのが原因だと思います。hash値を計算するならhash関数です。 とりあえず、ハッシュ関数や暗号化などが正しく動いているかどうかを調べるときは、入力と期待される出力が例示されているテストベクトルを見るのが当たり前です。SHA256のテストベクトルは下記で見つかります。 http://www.nsrl.nist.gov/testdata/ 例えば、 "abc"のhash値を計算して、16進数表示した時に BA7816BF 8F01CFEA 414140DE 5DAE2223 B00361A3 96177A9C B410FF61 F20015AD という結果が出ないというのはSHA256の仕様通りの計算ができていません。 ちなみに、hash_hmac('sha256', 'abc', false);するとこの値は出ません。 まずはhash関数のマニュアルを見てみましょう。 http://www.php.net/manual/ja/function.hash.php ちなみに、hash_hmac関数というのはHMACを計算するための関数です。 http://ja.wikipedia.org/wiki/HMAC http://www.php.net/manual/ja/function.hash-hmac.php 当然、出てくる値も違うはずです。
お礼
ご回答ありがとうございます。 大変参考になりました。