Доступны ли CC_MD5() и CC_SHA1() в iOS 4?

Я хочу использовать MD5 или SHA-1 в своем приложении для iOS, предназначенном для iOS 4 и более поздних версий. Я использую функции CC_MD5() и CC_SHA1() из CommonCrypto/CommonDigest.h. Кажется, он отлично работает на iPhone под управлением iOS 4.1 и в симуляторе iPhone 4.0, но я обеспокоен тем, что функции объявлены следующим образом в iOS 5 SDK, который поставляется с XCode 4.2:

extern unsigned char *CC_MD5(const void *data, CC_LONG len, unsigned char *md)
__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_5_0);

extern unsigned char *CC_SHA1(const void *data, CC_LONG len, unsigned char *md)
__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_5_0);

Похоже, это указывает на то, что функции доступны только в iOS 5 и более поздних версиях.

Разрешены ли эти функции в приложении для iOS 4, и если да, то есть ли официальная ссылка, подтверждающая этот факт?


person GBegen    schedule 01.11.2011    source источник
comment
Вы нашли какой-нибудь ответ на это?   -  person dlinsin    schedule 14.11.2011
comment
Официального ответа пока нет. В настоящее время я использую свои собственные эмпирические доказательства того, что он отлично работает на симуляторе iOS 4 и на всех устройствах iOS 4, на которых я его пробовал.   -  person GBegen    schedule 14.11.2011
comment
Я написал некоторый код, используя эти функции для SDK 4.x только сейчас, чтобы найти их, помеченные как начиная с 5.0. Я думаю, что это, вероятно, ошибка в объявлении OSX_AVAILABLE_STARTING. Однако беглое гугление не обнаружило никаких доказательств этого.   -  person johnwayner    schedule 04.12.2011


Ответы (4)


В заголовочном файле по пути: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/include/CommonCrypto/CommonDigest.h

мы можем видеть :

extern unsigned char *CC_MD5(const void *data, CC_LONG len, unsigned char *md)
__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);

Итак, Apple теперь сообщает нам, что он поддерживается :-)

person ıɾuǝʞ    schedule 12.12.2012

CC_SHA1 тоже работает, я уже некоторое время использую его с 4.3.

person Simon Germain    schedule 13.02.2012

CC_MD5 работает в iOS 4.3. Я думаю, что это должно было быть недокументировано до iOS 5 или что-то в этом роде.

person Sandy    schedule 13.02.2012

Лучший способ узнать, доступны ли какие-либо функции или методы класса, — установить цель развертывания вашего проекта на самую низкую версию ios, с которой вы хотите, чтобы ваше приложение работало, и протестировать на реальном устройстве (или в симуляторе iPhone, но я думаю, что реальное устройство является лучшим решением) через целевую версию развертывания.

Если оно недоступно, ваше приложение выйдет из строя, и отладчик сообщит вам, какие функции нельзя использовать в этой версии iOS. Вам придется протестировать более мощную версию.

Если он работает на реальном устройстве, эти функции доступны. :)

person abidon    schedule 28.07.2012