我目前正在开发一款需要将身份验证数据发送到提供的API的应用。基本上它需要根据你要发送的DATA生成一个SHA256,基于一个共享密钥。
API通常与PHP一起使用,它提供了类似这个方便的功能:
$key = hash_hmac('sha256', $postdata , $sharedkey);
在IOS功能中:
CC_SHA256(const void *postdata, CC_LONG len, unsigned char *md)
但是这个函数不是key的参数。
是否有办法做到这一点?
答案 0 :(得分:0)
+ (NSString *)hashedString:(NSString *)value withKey:(NSString *)key
{
const char *cKey = [key cStringUsingEncoding:NSUTF8StringEncoding];
const char *cData = [value cStringUsingEncoding:NSUTF8StringEncoding];
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac (kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {
[output appendFormat:@"%02x", cHMAC[i]];
}
return output;
}
不要忘记导入源代码#import <CommonCrypto/CommonHMAC.h>
这种方法符合我的意思。我的问题解决了。