3

SO で iOS と SHA256 について少なくとも 6 ページを見ましたが、何が起こっているのかまだわかりません。

一般的に、関数を使用して PHP で SHA256 を実行することに慣れており、次のhash()ような文字列値を返します。db1204372d8d9f14acc608b497227047d63ad868987883d0a29198be8e6ce853

アプリとサーバー間のセキュリティを強化するために、iOS アプリに SHA256 を実装しようとしていますが、エンコード部分が頭を悩ませています...

私は NSData カテゴリを使用しています:

+ (NSData *)sha256:(NSData *)data {

NSMutableData *out = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH];

CC_SHA256(data.bytes, data.length,  out.mutableBytes);

if ( CC_SHA256(data.bytes, data.length, out.mutableBytes) ) return out;

return nil;
}

ただし、結果の NSData オブジェクトを (サーバーに送信するために) NSString にエンコードしようとしても、このような文字列になってしまいます。ã°ÄBüûôÈo¹$'®AädL¤xR¸U

私の質問 -hash同じ値をいずれかのメソッドに渡すと同じ値が得られるように、 と同じように動作するカテゴリを実装するにはどうすればよいですか?

助けてくれてありがとう

4

1 に答える 1

0

パーティーに遅れてすみません。

PHP から得られる結果は、各バイトの 16 進数値を連結したものです。ios から取得した値は、実際のバイト文字列です。

[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding]文字列を取得するようなものを使用していると思われます。

しかし、 How can i convert NSdata to hex string?で説明されているように、NSData必要な形式に変換する必要があります。.[data description]

于 2014-01-20T03:35:07.700 に答える