Использование хеша MD5 в строке в cocoa?

Возможный дубликат:
Алгоритм MD5 в Objective C

Мне нужно hashировать строку, используя технику MD5 в cocoa. Любые фреймворки, которые используются, должны быть доступны на iphone. пожалуйста, предоставьте код, если это возможно.

Ну, во-первых, MD5 не шифрует. Поэтому, если вы ищете шифрование, вы ищете не то место.

Но если вы просто хотите хешировать что-то, используя MD5 на iPhone, это должно предоставить вам необходимую вам информацию:

#import  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] ]; } //… NSString *digest = md5(@"test"); NSLog(@"MD5 TEST %@", digest); 

(Из расчета MD5 на iPhone )

Обратите внимание на это в исходном коде Facebook Connect. Выглядит довольно солидно, дайте ему шанс.

 #import  ... + (NSString*)md5HexDigest:(NSString*)input { const char* str = [input UTF8String]; unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5(str, strlen(str), result); NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH*2]; for(int i = 0; i 

Это то, что я использую. Кредиты отправляются Алистеру Макмиллану .

 #import  + (NSString *) md5:(NSString *)str { const char *cStr = [str UTF8String]; unsigned char result[16]; 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] ]; } 

ПРИМЕЧАНИЕ №1: мне не нужно было ссылаться на какие-либо библиотеки

ПРИМЕЧАНИЕ # 2: я не смог найти -lcrypto во внешнем фреймворке на iphone, и это работает без -lcrypto

Стоит отметить, что методы OpenSSL устарели в более поздних версиях OS X, а дайджест MD5 обычно имеет более низкий регистр. Лично я больше поклонник разворачиваемого стиля для эффективности, и я думаю, что использование категорий ObjC для этого лучше подходит.

Для MD5Digest.h: #include

 @interface NSString (MD5Digest) - (NSString*) md5Digest; @end @interface NSData (MD5Digest) - (NSString*) md5Digest; @end 

И MD5Digest.m:

 #include  #include "MD5Digest.h" static NSString* md5Digest(const void *data, CC_LONG length) { unsigned char digest[CC_MD5_DIGEST_LENGTH]; unsigned char* d = CC_MD5(data, length, digest); return [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8], d[9], d[10], d[11], d[12], d[13], d[14], d[15], nil]; } @implementation NSString (MD5Digest) - (NSString*) md5Digest { return md5Digest([self UTF8String], [self lengthOfBytesUsingEncoding:NSUTF8StringEncoding]); } @end @implementation NSData (MD5Digest) - (NSString*) md5Digest { return md5Digest([self bytes], [self length]); } @end 

Я добавил следующее в категорию «NSString + MyGoonk»:

 #include  - (NSString *)md5 { NSData *data = [self dataUsingEncoding: NSUTF8StringEncoding]; unsigned char *digest = MD5([data bytes], [data length], NULL); return [NSString stringWithUTF8String: (char *)digest]; } 

Две вещи:

  1. это предполагает, что ваша строка – UTF8. Я уверен, что есть способ сделать его более общим, но я почти никогда не использую ничего другого.

  2. вам нужно связать -lcrypto с вашим проектом.

Проведя слишком много времени, пытаясь понять это, я сделал полный пост с правильным кодом и тем, как его использовать. Вы можете найти сообщение здесь в своем блоге. http://www.saobart.com/md5-has-in-objective-c/

MD5 – это не шифрование, это криптографическая hash-функция . Это односторонняя функция, выход которой – 128-битное число. Тот факт, что он является криптографическим, означает, что это сложная вычислительная проблема, которая, учитывая выход hash-файла MD5, вычисляет строку, MD5 которой это значение. Таким образом, MD5 может использоваться для проверки целостности данных, но не для шифрования.

  • iOS HTTP-запрос в фоновом режиме
  • Как я могу заставить UITextField двигаться вверх, когда клавиатура присутствует?
  • Может ли iPhone приложение блокировать телефонные звонки?
  • Есть ли документальный способ настройки ориентации iPhone?
  • Как анализировать длительность ISO-8601 в Objective C?
  • Прокрутка двумя пальцами с помощью UIScrollView
  • Обнаружение iPhone / iPod Touch
  • Проверить версию iOS во время выполнения?
  • Как получить текущее название города?
  • Почему автореферат особенно опасен / дорого для приложений iPhone?
  • Сортировка NSArray строк или объектов даты
  • Давайте будем гением компьютера.