如何在cocoa/iOS中进行SHA哈希

10

给定消息和盐,如何将其编码并返回哈希字符串?

我需要复制 PHP 函数:

hash_hmac('sha256','message','salt');

谢谢


1
这个问题有一个看起来不错的答案: https://dev59.com/6G025IYBdhLWcg3wFxqa - Bogatyr
1
是的,但不知道如何使用盐... - Addev
1个回答

39

找到答案了:

#import <CommonCrypto/CommonHMAC.h>

-(NSString *) hashString :(NSString *) data withSalt: (NSString *) salt {


   const char *cKey  = [salt cStringUsingEncoding:NSUTF8StringEncoding];
   const char *cData = [data cStringUsingEncoding:NSUTF8StringEncoding];
   unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
   CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);

   NSString *hash;

   NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];

   for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++)
       [output appendFormat:@"%02x", cHMAC[i]];
   hash = output;
   return hash;

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接