それで、最終的に hmac sha 256 ハッシュを行う方法を見つけました。これを、私が作成した wcf サービス API に使用します。私の問題は、私のメソッドが送信している NSData 出力にスペースがあることです。
例えば。これは、私のAPIが送信するもののように見える方法です
"2efb00aba01a3f5b674fba3063b43fee7a9356947118......"
そして、これは私のiPhoneアプリがそれを示す方法です
<2efb00ab a01a3f5b 674fba30.....>
これは、目的の c の私のコードがどのように見えるかです。
NSData *hmacSHA256(NSString *key, NSString *data)
{
const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
return [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
}
これはこの答えから来ました:
https://stackoverflow.com/a/8459123/639713
とにかく、私の問題は、これにどう対処するかです。NSdata 出力を文字列に変換するにはどうすればよいですか? 文字列に変換された場合、出力は WCF サービス API が送信するものとは異なると思います。API が hmacsha256 出力を処理する方法を変更しますか?
ありがとう!