我在尋找在Objective-C 一個HMAC-SHA1代碼示例我看到this樣品,它看起來清晰可讀,問題是,有沒有一個不清楚線:HMAC-SHA1代碼示例
NSString *hash = [HMAC base64Encoding];
接電話的人說,base64Encoding是他的自定義代碼...
你能不能幫我填補空白,並建議我需要什麼,而不是放在那裏?
謝謝。
我在尋找在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