HMAC-SHA1代码示例
我在寻找在Objective-C 一个HMAC-SHA1代码示例我看到this样品,它看起来清晰可读,问题是,有没有一个不清楚线:HMAC-SHA1代码示例
NSString *hash = [HMAC base64Encoding];
接电话的人说,base64Encoding是他的自定义代码...
你能不能帮我填补空白,并建议我需要什么,而不是放在那里?
谢谢。
我通常使它在这样的分类:
[NSString base64forData:HMAC];
这里是方法,你可以使用:
+ (NSString*)base64forData:(NSData*)theData {
const uint8_t* input = (const uint8_t*)[theData bytes];
NSInteger length = [theData length];
static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=";
NSMutableData* data = [NSMutableData dataWithLength:((length + 2)/3) * 4];
uint8_t* output = (uint8_t*)data.mutableBytes;
NSInteger i;
for (i=0; i < length; i += 3) {
NSInteger value = 0;
NSInteger j;
for (j = i; j < (i + 3); j++) {
value <<= 8;
if (j < length) {
value |= (0xFF & input[j]);
}
}
NSInteger theIndex = (i/3) * 4;
output[theIndex + 0] = table[(value >> 18) & 0x3F];
output[theIndex + 1] = table[(value >> 12) & 0x3F];
output[theIndex + 2] = (i + 1) < length ? table[(value >> 6) & 0x3F] : '=';
output[theIndex + 3] = (i + 2) < length ? table[(value >> 0) & 0x3F] : '=';
}
return [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
}
确实非常好的类别,一定会有用的! – 2012-02-23 10:33:52
我试图调用这样的函数:NSString * hash = [self base64Encoding:HMAC];但它会抛出异常:'NSInvalidArgumentException',原因:' - [ViewController base64Encoding:]:无法识别的选择器发送到实例 – Nir 2012-02-25 14:48:23
如果在您的ViewController中声明它(这不好),使用' - (NSString *)' (NSString *)' – Artem 2012-02-27 11:10:10
你得到这个工作,因为我希望创建一个签名AWS SES。 – MMKD 2012-03-22 11:00:58
它的工作原理,但我不能确定它是否正确地工作.. – Nir 2012-04-25 11:51:04
非常感谢。我能够得到这个排序感谢你,使用另一种方法,所以我不能确认也不否认这种方法。 – MMKD 2012-04-27 12:06:09