Я хочу зашифровать строку ключом, используя HmacSHA256. Код, который все используют, приведен ниже, но есть одна вещь, которая не имеет смысла.
Зачем нам использовать base64 в конце, если все, что мы хотим, это хеш HmacSHA256?
Я пытался увидеть хеш, сгенерированный после вызова метода CCHmac с
NSString *str = [[NSString alloc] initWithData:HMAC encoding:NSASCIIStringEncoding];
NSLog(@"%@", str);
Но я не получаю сгенерированный хеш, я получаю ноль или мусор, как это:
2011-10-11 09: 38: 05.082 Hash_HmacSHA256 [368: 207] (ноль)
2011-10-11 09: 38: 05.085 Hash_HmacSHA256 [368: 207] Rwªb7iså {yyþ§Ù (& oá ÷ ÛËÚ ¥ M`f
import < CommonCrypto/CommonHMAC.h>
NSString *key;
NSString *data;
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);
NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
length:sizeof(cHMAC)];
NSString *hash = [HMAC base64Encoding]; //This line doesn´t make sense
[key release];
[data release];