2016-12-18 2 views
0

現在、提供されているAPIに認証データを送信する必要があるアプリケーションを開発中です。基本的には、SHARED KEYに基づいて、送信するDATAに基づいてSHA256を生成する必要があります。 IOS機能でMD5共有鍵に基づくobjective-cのハッシュ

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

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

が、この関数はキーの引数ではありません

APIは、通常は、この便利な機能のようなものを提供してPHP、一緒に使用されます。

どうすればいいですか?

+0

スウィフトでは、私がこれを使用します。https://github.com/krzyzanowskim/CryptoSwift –

+0

の可能性のある重複:http://stackoverflow.com/questions/14516191/xcode-ios-hmac-sha-256-hashing –

+0

@LucaAngioloni CryptoSwiftの使用を避けるのが最善です。これは、Common Cryptoベースの実装よりも100〜1000倍遅いということです。アップルのCommon CryptoはFIPS認証を取得しており、CryptoSwiftを使用して正当性とセキュリティを確保しています。 – zaph

答えて

0
+ (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 <CommonCrypto/CommonHMAC.h>

をインポートすることを忘れないでください。私の問題は解決されました。

+0

あなたのPHPはMD5ハッシュを作成している間、あなたのソリューションはSHA-256ハッシュを計算します。 – clemens

関連する問題