尝试使用下面的代码使用HMac SHA256
来获取摘要,但每次都会给出不同的输出。对于目标c中的相同输入,每次都会生成不同的HMac摘要。
这里的关键参数是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
摘要是每次被调用时产生不同的输出。
谢谢zaph。用你的解决方案它就像一个魅力:)。现在我可以每次看到相同的输出,并感谢指出我正在提交的错误。 – Sagar