带秘钥的Hmac-MD5加密,在网上找到一个例子。
- (NSString*)LJHMACMD5:(NSString*)data key:(NSString*)key {
NSData *datas = [data dataUsingEncoding:NSUTF8StringEncoding];
size_tdataLength = datas.length;
NSData *keys = [key dataUsingEncoding:NSUTF8StringEncoding];
size_tkeyLength = keys.length;
unsigned char result[CC_MD5_BLOCK_BYTES];
CCHmac(kCCHmacAlgMD5, [keysbytes], keyLength, [datasbytes], dataLength, result);
NSString*newHexStr =@"";
for(inti =0; i
NSString*append = [NSStringstringWithFormat:@"%x",result[i]&0xff];
if(append.length==1) {
append = [NSStringstringWithFormat:@"0%@",append];
}
newHexStr = [newHexStrstringByAppendingString:append];
}
returnnewHexStr;
}
需要导入头文件#import <CommonCrypto/CommonHMAC>
其中返回的result要转成16进制的字符串,使用了[NSString stringWithFormat:@"%x",result[i]&0xff]这个方法,但是当十六进制数小于16是,高位需要补0,所以做了个判断,前边添加0。
HMAC-SHA1算法应该类似,将kCCHmacAlgMD5转成kCCHmacAlgSHA1即可(没有实际测试过)。
这样我们的APP在请求数据的时候安全性更加高了。
网友评论