MD5哈希在objective-c中,基于共享密钥

时间:2016-12-18 15:02:01

标签: ios objective-c

我目前正在开发一款需要将身份验证数据发送到提供的API的应用。基本上它需要根据你要发送的DATA生成一个SHA256,基于一个共享密钥。

API通常与PHP一起使用,它提供了类似这个方便的功能:

$key = hash_hmac('sha256', $postdata , $sharedkey);
在IOS功能中

CC_SHA256(const void *postdata, CC_LONG len, unsigned char *md)

但是这个函数不是key的参数。

是否有办法做到这一点?

1 个答案:

答案 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>

这种方法符合我的意思。我的问题解决了。