关于HMAC签名相关

Overview

节后有个项目使用到腾讯云的活体检测,其实功能也不是很复杂,但在对接腾讯云的时候被他的签名方式耽误了一些时间,但好在它的文档写的很详细,仔细地阅读了官方文档,最后也在很快的时间内对接成功。

这里主要记录HMAC-SHA1在iOS中的代码,便于后期查阅。

引入头文件

1
2
#include <CommonCrypto/CommonDigest.h>
#include <CommonCrypto/CommonHMAC.h>

HMAC-SHA1算法签名,Base64进行编码

1
2
3
4
5
6
7
8
9
10
11
12
13
- (NSString *)hmacsha1:(NSString *)obj key:(NSString *)key {
const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [obj 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 base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

return hash;
}

参考资料