所以终于想出了如何进行 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 输出的方式?
谢谢!