“HMAC是密鑰相關(guān)的哈希運算消息認證碼(Hash-based Message Authentication Code),HMAC運算利用哈希算法,以一個密鑰和一個消息為輸入勤晚,生成一個消息摘要作為輸出川背。”
可以看出规哪,HMAC是需要一個密鑰的求豫。所以,HMAC_SHA1也是需要一個密鑰的诉稍,而SHA1不需要蝠嘉。
#import "AlgorithmManager.h"
#import <CommonCrypto/CommonCrypto.h>
@implementation AlgorithmManager
+ (NSString *)signWithHmacSHA1:(NSString *)input withKey:(NSString *)key{
const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [input cStringUsingEncoding:NSASCIIStringEncoding];
unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSData *HMACData = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
const unsigned char *buffer = (const unsigned char *)[HMACData bytes];
NSString *HMAC = [NSMutableString stringWithCapacity:HMACData.length * 2];
for (int i = 0; i < HMACData.length; ++i)
HMAC = [HMAC stringByAppendingFormat:@"%02lx", (unsigned long)buffer[i]];
return HMAC;
}
@end