【问题标题】:MD5 Hashing in objective-c, based on a shared keyObjective-c 中的 MD5 哈希,基于共享密钥
【发布时间】:2016-12-19 21:37:01
【问题描述】:

我目前正在开发一个应用程序,该应用程序需要将身份验证数据与它一起发送到提供的 API。基本上它需要根据您要发送的 DATA 生成一个 SHA256,基于一个 SHARED KEY。

该API通常与PHP一起使用,它提供了类似这样方便的功能:

$key = hash_hmac('sha256', $postdata , $sharedkey);

在IOS功能中:

CC_SHA256(const void *postdata, CC_LONG len, unsigned char *md)

但是这个函数不是key的参数。

有没有办法做到?

【问题讨论】:

标签: ios objective-c


【解决方案1】:
+ (NSString *)hashedString:(NSString *)value withKey:(NSString *)key
{
   const char *cKey  = [key cStringUsingEncoding:NSUTF8StringEncoding];
   const char *cData = [value cStringUsingEncoding:NSUTF8StringEncoding];

   unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];

   CCHmac (kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);

   NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];

   for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {
       [output appendFormat:@"%02x", cHMAC[i]];
   }

   return output;
}

别忘了导入源代码#import &lt;CommonCrypto/CommonHMAC.h&gt;

这个方法符合我的意思。我的问题解决了。

【讨论】:

  • 您的解决方案计算 SHA-256 哈希,而您的 php 创建 MD5 哈希。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 2018-11-04
  • 2020-12-08
  • 2011-12-20
  • 2016-10-29
相关资源
最近更新 更多