如何在可可/ iOS的SHA哈希

问题描述:

给定的消息和盐我如何编码它返回散列的字符串?如何在可可/ iOS的SHA哈希

我需要重现PHP函数:

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

感谢

+1

这个问题有一个看起来不错的答案:http://stackoverflow.com/问题/ 6228092 /我怎么能计算一个sha-2-idealally-sha-256-or-sha-512-hash-in-ios – Bogatyr 2012-02-26 16:10:31

+1

是的,但不知道如何使用盐... – Addev 2012-02-26 17:00:47

找到了答案:

#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; 

}