вот как вы можете создать HMAC-SHA1 base64.
Вам необходимо добавить Base64.h и Base64.m в свой проект. Вы можете получить его от here.
Если вы используете ARC, в Base64.m будут отображаться некоторые ошибки. Найдите похожие строки
return [[[self alloc] initWithBase64String:base64String] autorelease];
Вам необходимо удалить раздел авторекламы. Конечный результат должен выглядеть так:
return [[self alloc] initWithBase64String:base64String];
Теперь в вашем общем проекте импортируйте «Base64.ч» и следующий код
#import "Base64.h"
#include <CommonCrypto/CommonDigest.h>
#include <CommonCrypto/CommonHMAC.h>
- (NSString *)hmacsha1:(NSString *)data secret:(NSString *)key {
const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
NSString *hash = [HMAC base64String];
return hash;
}
С
NSLog(@"Hash: %@", hash);
вы получите что-то похожее на это:
ghVEjPvxwLN1lBi0Jh46VpIchOc=
Я не понимаю, почему вы используете тыс e base64Encoding, если все, что мы хотим, это иметь строку сгенерированного хэша. Можете ли вы объяснить, потому что в итоге мы получаем hmac-sha256 с кодировкой base64, а не hmac-sha256 ... – bruno
@bruno, если вы не заметили, ваш ответ был удален и внесен в комментарий. Если у вас есть больше, чтобы опубликовать сообщение, отправьте его как новый ответ. –