iOS上的HMAC SHA 384

Paw*_*łka 1 objective-c hmac ios

我的代码看起来像这样(使用CommonCrypto/CommonHMAC.h):

- (NSString*) preperingCryptedData: (NSString*) data withKey: (NSString*) key {

    NSData* dataToHash = [data dataUsingEncoding:NSUTF8StringEncoding];

    NSData* keyData = [key dataUsingEncoding:NSUTF8StringEncoding];

    NSLog(@"Utility: preperingCryptedData - Data to Crypt: %@ and key %@\n...\n...\n...\n",dataToHash,keyData);

    NSMutableData *dataHash = [NSMutableData dataWithLength:CC_SHA384_DIGEST_LENGTH];

    CCHmac(kCCHmacAlgSHA384, keyData.bytes, keyData.length, dataToHash.bytes, dataToHash.length, dataHash.mutableBytes);

    NSString* readyString = [[NSString alloc] initWithData:dataToHash encoding:NSUTF8StringEncoding];

    NSLog(@"Utility: preperingCryptedData call, result :%@\n...\n...\n...\n",readyString);

    return readyString;
}
Run Code Online (Sandbox Code Playgroud)

当我使用的代码:这里我得到了我的字符串解码,而不关键.我究竟做错了什么?如何在没有密钥的情况下对消息进行编码?

zap*_*aph 5

代码有两个问题:

1)您使用的dataToHash是输出而不是dataHash.

2)dataHash不是UTF8数据表示,因此无法成功转换为NSString.