Objective C HMAC-MD5

- (NSString*) HMACWithSecret:(NSString*) secret andString:(NSString *)str
{
    unsigned long encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
    
    CCHmacContext    ctx;
    const char       *key = [secret cStringUsingEncoding:encode];
    const char       *string = [str cStringUsingEncoding:encode];
    unsigned char    mac[CC_MD5_DIGEST_LENGTH];
    char             hexmac[2 * CC_MD5_DIGEST_LENGTH + 1];
    char             *p;
    
    CCHmacInit( &ctx, kCCHmacAlgMD5, key, strlen( key ));
    CCHmacUpdate( &ctx, string, strlen(string) );
    CCHmacFinal( &ctx, mac );
    
    p = hexmac;
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++ ) {
        snprintf( p, 3, "%02x", mac[ i ] );
        p += 2;
    }
    
    return [NSString stringWithUTF8String:hexmac];
}

 encode 根据需要可以使用GBK的中文编码,不需要中文的话可以使用UTF-8编码

原文地址:https://www.cnblogs.com/wlsxmhz/p/5549368.html