Как SHA-хэш в cocoa/iOS Учитывая сообщение и соль, как я могу закодировать его, возвращая хешированную строку? Мне нужно воспроизвести функцию php: hash_hmac('sha256','message','salt'); Спасибо Ответ 1 Найден ответ: #import <CommonCrypto/CommonHMAC.h> -(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; }
Ответ 1 Найден ответ: #import <CommonCrypto/CommonHMAC.h> -(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; }