I am trying to copy some php to Objective-C and have stumbled upon a slight problem.
The php uses the line substr(hash_hmac('sha256', $string, $token), 0, 20)
which outputs
ac56093452148b1f18e4
In Objective-C I use CCHmac
like this:
NSData *hmacForKeyAndData(NSString *token, NSString *string)
{
const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
return [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
}
which returns NSData
which when logged is:
<ac560934 52148b1f 18e4385b cfa4f8cd cebe12c3 99d3281d 9f48c312 d6802449>
which looks the exact same as what php returns from hash_hmac('sha256', $string, $token)
I think you can see my problem here. I have the right output (It just needs trimming to 20 characters), but as NSData
. If I convert the NSData
to an NSString
then I get a load of funny characters. I need to take the NSData
<ac560934>
and convert it into the string ac560934
Is this even possible? Or should I be using a different approach for the hash_mac
?
Thanks