Будет ли CommonCrypto работать в моем приложении на устройстве iPhone? - PullRequest
1 голос
/ 14 сентября 2011

Очень похоже на этот вопрос , я рассчитываю вычислить MD5-хеш строки для использования в API.

Согласно этой теме в обсуждениях Apple , это не будет работать на устройстве:

Платформа CommonCrypto отсутствует на iPhone. К сожалению, iPhone Simulator компилируется с платформами Mac OS X, поэтому он будет работать на симулятор ... но вы не получите его для компиляции для устройства.

Будет ли такой код работать на устройстве, хорошо?

#import <CommonCrypto/CommonDigest.h>

#define CC_MD5_DIGEST_LENGTH 16   /* digest length in bytes */

- (NSString *)md5:(NSString *)str { 
    const char *cStr = [str UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH]; 
    CC_MD5(cStr, strlen(cStr), result); 
    return [NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",                     
                result[0], result[1], result[2], result[3],
                result[4], result[5], result[6], result[7],
                result[8], result[9], result[10], result[11],
                result[12], result[13], result[14], result[15]];        
}

Какой самый последний и лучший способ создания хеша MD5 на устройстве? Как добавить CommonCrypto / CommonDigtest.h в XCode 4?

Спасибо

1 Ответ

5 голосов
/ 14 сентября 2011

Да, вы можете использовать CommonCrypto iniOS. У меня есть приложение в APpStore, которое использует CommonCrypto.

Более подробная информация, чтобы сделать сообщение более полным:

Просто импортируйте заголовки, такие как

#import <CommonCrypto/CommonDigest.h>
#import <CommonCrypto/CommonHMAC.h>
#import <CommonCrypto/CommonCryptor.h>

и рамки: Security.framework

Вот пример использования SHA1 с NSData, просто замените его на MD5:

+ (NSData *)doSha1:(NSData *)dataIn
{
    NSMutableData *macOut = [NSMutableData dataWithLength:CC_SHA1_DIGEST_LENGTH];

    CC_SHA1( dataIn.bytes,
             dataIn.length,
             macOut.mutableBytes);

    return macOut;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...