Возникли проблемы с вызовом функции MD5 (Obejctive-C, iPhone) - PullRequest
2 голосов
/ 14 ноября 2010

Я пытался использовать шифрование MD5 для создаваемого приложения iPhone.Я создал файл md5.m со следующим кодом (скопированный из StackOverflow):

#import <CommonCrypto/CommonDigest.h>

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]
      ] lowercaseString];
}

Затем я попытался вызвать функцию (в другом файле .m), используя:

NSString *digest = md5(@"password");

Но по какой-то причине я продолжаю получать сообщение об ошибке «Ожидаемое выражение до« mad5 »» ... Что я не ошибаюсь?

Ответы [ 2 ]

1 голос
/ 14 ноября 2010

Убедитесь, что вы поместили NSString* md5( NSString *str ); в заголовочный файл, который соответствует файлу реализации (.m).Также убедитесь, что вы импортируете этот заголовочный файл в класс, который будет использовать эту функцию, используя #import TestClass.h.

. Это было проверено:

TestClass.h

@interface TestClass : NSObject { }

NSString* md5 (NSString* str);

@end

TestClass.m

#import "TestClass.h"
#import <CommonCrypto/CommonDigest.h>

@implementation TestClass

    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]
          ] lowercaseString];
    }

@end

UsingClass.m

-(void)useMD5
{
    NSString *digest = md5(@"password");
}
1 голос
/ 14 ноября 2010

Если я просто возьму ваш код и вставлю его в простой инструмент Foundation, все скомпилируется и запустится.

Если вы скопировали / вставили свою ошибку, то «mad5» означает, что вы написали с ошибкой «md5».

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

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