Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在cocoa/iOS中哈希_Objective C_Ios_Cocoa Touch_Cocoa - Fatal编程技术网

Objective c 如何在cocoa/iOS中哈希

Objective c 如何在cocoa/iOS中哈希,objective-c,ios,cocoa-touch,cocoa,Objective C,Ios,Cocoa Touch,Cocoa,给定消息和salt,如何对返回哈希字符串的消息进行编码 我需要复制php函数: hash_hmac('sha256','message','salt'); 谢谢找到了答案: #import <CommonCrypto/CommonHMAC.h> -(NSString *) hashString :(NSString *) data withSalt: (NSString *) salt { const char *cKey = [salt cStringUsingEn

给定消息和salt,如何对返回哈希字符串的消息进行编码

我需要复制php函数:

hash_hmac('sha256','message','salt');
谢谢

找到了答案:

#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;

}
#导入
-(NSString*)hashString:(NSString*)数据加盐:(NSString*)盐{
const char*cKey=[salt cStringUsingEncoding:NSUTF8StringEncoding];
const char*cData=[data cStringUsingEncoding:NSUTF8StringEncoding];
无符号字符cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256、cKey、strlen(cKey)、cData、strlen(cData)、cHMAC);
NSString*散列;
NSMutableString*输出=[NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH*2];
对于(int i=0;i
这个问题的答案看起来不错:是的,但我不知道如何使用盐。。。