xcode ios HMAC SHA 256 hashing

后端 未结 3 1832
星月不相逢
星月不相逢 2021-02-01 20:30

So I\'m trying to figure out how to do a hmacshad256 hash on ios as that\'s the hash I did for the wcf service api I made. I\'ve been trying to look for some info about it but w

3条回答
  •  梦如初夏
    2021-02-01 21:17

    Here is the solution I'm submitting that I put together from other answers on the matter:

    This is easily adapted to other hash types by changing CC_SHA256_DIGEST_LENGTH and kCCHmacAlgSHA256.

    If you're interested in doing that, check out the CommonDigest.h file within the CommonCrypto library.

    #import 
    #import 
    
    + (NSString *)hmac:(NSString *)plaintext withKey:(NSString *)key
    {
        const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];
        const char *cData = [plaintext cStringUsingEncoding:NSASCIIStringEncoding];
        unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
        CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
        NSData *HMACData = [NSData dataWithBytes:cHMAC length:sizeof(cHMAC)];
        const unsigned char *buffer = (const unsigned char *)[HMACData bytes];
        NSMutableString *HMAC = [NSMutableString stringWithCapacity:HMACData.length * 2];
        for (int i = 0; i < HMACData.length; ++i){
            [HMAC appendFormat:@"%02x", buffer[i]];
        }
    
        return HMAC;
    }
    

    This has been tested on iOS 8.x and iOS 7.x

提交回复
热议问题