由于项目中需求跟无线AP通讯,通讯协议中有一部分data 需要进行HMACSHA1加密,在Github和stackoverflow上找了一些方法发现使用中都出错了,很多都是对NSString类型消息加密,而我需要对一定格式的data加密,我做了一些改变。代码如下:
#import <Foundation/Foundation.h>
@interface HJHMACSHA1 : NSObject
+ (NSString *)HMACSHA1:(NSData *)data withKey:(NSString *)key;
@end
#import "HJHMACSHA1.h"
#import <CommonCrypto/CommonHMAC.h>
@implementation HJHMACSHA1
+ (NSString *)HMACSHA1:(NSData *)data withKey:(NSString *)key{
NSParameterAssert(data);
NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData *hMacOut = [NSMutableData dataWithLength:CC_SHA1_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA1,
keyData.bytes, keyData.length,
data.bytes, data.length,
hMacOut.mutableBytes);
NSString *hexString = @"";
if (data) {
uint8_t *dataPointer = (uint8_t *)(hMacOut.bytes);
for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
hexString = [hexString stringByAppendingFormat:@"%02x", dataPointer[i]];
}
}
return hexString;
}
@end