如何在 iOS 中使用 CCHmac?
How to use CCHmac in iOS?
我想在 iOS 中用盐生成 SHA512。我发现以下代码片段可以实现此目的,但我发现 CCHmac()
函数适用于 mac.
-(NSString *)hashString:(NSString *)data withSalt:(NSString *)salt
{
const char *cKey = [salt cStringUsingEncoding:NSUTF8StringEncoding];
const char *cData = [data cStringUsingEncoding:NSUTF8StringEncoding];
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSString *hash;
NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {
[output appendFormat:@"%02x", cHMAC[i]];
}
hash = output;
return hash;
}
如果我使用 CC_SHA512()
函数,那么我将如何使用 salt 字符串?
SHA256 HMAC 示例:
+ (NSData *)doHmac:(NSData *)dataIn key:(NSData *)salt
{
NSMutableData *macOut = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH];
CCHmac( kCCHmacAlgSHA256,
salt.bytes, salt.length,
dataIn.bytes, dataIn.length,
macOut.mutableBytes);
return macOut;
}
我缺少以下行:
#import <CommonCrypto/CommonHMAC.h>
实际上,< CommonCrypto / CommonCryptor.h > 已经添加到我的代码中。所以,乍一看,我认为不必担心导入特定的头文件。但是,突然我意识到我将不得不导入另一个头文件。
我想在 iOS 中用盐生成 SHA512。我发现以下代码片段可以实现此目的,但我发现 CCHmac()
函数适用于 mac.
-(NSString *)hashString:(NSString *)data withSalt:(NSString *)salt
{
const char *cKey = [salt cStringUsingEncoding:NSUTF8StringEncoding];
const char *cData = [data cStringUsingEncoding:NSUTF8StringEncoding];
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSString *hash;
NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {
[output appendFormat:@"%02x", cHMAC[i]];
}
hash = output;
return hash;
}
如果我使用 CC_SHA512()
函数,那么我将如何使用 salt 字符串?
SHA256 HMAC 示例:
+ (NSData *)doHmac:(NSData *)dataIn key:(NSData *)salt
{
NSMutableData *macOut = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH];
CCHmac( kCCHmacAlgSHA256,
salt.bytes, salt.length,
dataIn.bytes, dataIn.length,
macOut.mutableBytes);
return macOut;
}
我缺少以下行:
#import <CommonCrypto/CommonHMAC.h>
实际上,< CommonCrypto / CommonCryptor.h > 已经添加到我的代码中。所以,乍一看,我认为不必担心导入特定的头文件。但是,突然我意识到我将不得不导入另一个头文件。