HMAC_SHA1算法的Objective-C实现

做项目时,用到HMAC_SHA1算法。代码实现,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static NSString *HMAC_SHA1 = @"HmacSHA1";
static NSString *APPKEY = @"123456";//这是key
- (NSString *)generateSignature:(NSString *)data
{
const char *cKey = [APPKEY 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)] autorelease];

NSString *hash = [HMAC base64Encoding];

return hash;
}

这里用到NSData类别:https://github.com/WideTag/WideNoise-iOS/blob/master/WideNoise/Categories/NSData%2BBase64Encoding.m/