您的位置:首页 > 其它

hmac-sha1算法

2016-04-29 10:25 621 查看
+ (NSString *)hmac_sha1:(NSString *)plaintext withKey:(NSString *)key
{
NSData *cKey  = [self hexStringToNSData:key];  //key转换为二进制数据
const char *cData = [plaintext cStringUsingEncoding:NSUTF8StringEncoding];

uint8_t cHMAC[CC_SHA1_DIGEST_LENGTH];

CCHmac(kCCHmacAlgSHA1, [cKey bytes], cKey.length, cData, strlen(cData), cHMAC);  //hmac

NSString *hash;
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)  //转换到output
[output appendFormat:@"%02x", cHMAC[i]];
hash = output;

return hash;
}
<pre name="code" class="objc">+ (NSData*)hexStringToNSData:(NSString*)hexStr
{
hexStr = [hexStr stringByReplacingOccurrencesOfString:@" " withString:@""];
NSMutableData *data= [[NSMutableData alloc] init];
unsigned char whole_byte;
char byte_chars[3] = {'\0','\0','\0'};
for (int i = 0; i < ([hexStr length] / 2); i++) {
byte_chars[0] = [hexStr characterAtIndex:i*2];
byte_chars[1] = [hexStr characterAtIndex:i*2+1];
whole_byte = strtol(byte_chars, NULL, 16);
[data appendBytes:&whole_byte length:1];
}
NSLog(@"%@", data);
return data;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: