Попытка получить дайджест с использованием HMac SHA256
с нижеследующим кодом, но каждый раз, когда он дает разные результаты.Различные данные HMac Digest генерируются каждый раз для одного входа в объекте c
Здесь ключевой параметр находится в формате Base64string
, в то время как параметр открытого текста не имеет никакой кодировки.
+(NSString *)hmacWithIndicies:(NSString *)plaintext withKey:(NSString *)key {
NSLog(@"Input text::%@",plaintext);
NSLog(@"Input Key::%@",key);
NSData *keyData = [[NSData alloc] initWithBase64EncodedString:key options:0];
NSLog(@"Key Data is::%@",keyData);
const char *cKey = (char *)[keyData bytes];
NSLog(@"Key Length is::%lu",strlen(cKey));
NSData *keyInData = [NSData dataWithBytes:cKey length:sizeof(cKey)];
NSLog(@"Key data = %@", keyInData);
//Data here
const char *cData = [plaintext cStringUsingEncoding:NSUTF8StringEncoding];
NSLog(@"Input Length is::%lu",strlen(cData));
NSData *dataData = [NSData dataWithBytes:cData length:sizeof(cData)];
NSLog(@"Input data = %@", dataData);
uint8_t cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSData *hMacInData =[[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
NSLog(@"Hash Mac data generated is %@", hMacInData);
NSString *b64EncStrHmac = [hMacInData base64EncodedStringWithOptions:0];
NSLog(@"Hash Mac generated is %@", b64EncStrHmac);
return b64EncStrHmac;
}
Вызов описанного выше метода, как показано ниже: -
NSString * hMacOutput= [KeyGeneration hmacWithIndicies:@"2SagarPra2983688" withKey:@"qDwki5t1SSuKER4mzSMBHXhtt+PRMCv0B2LgXaBZmgE="];
NSLog(@"Output of HMac digest::%@",hMacOutput);
hMacOutput
дайджеста приводит к различной мощности каждый раз, когда она вызывается.
Спасибо заф. С вашим решением он работал как шарм :). Теперь я мог видеть один и тот же вывод каждый раз и спасибо за указание ошибки, которую я совершал. – Sagar