Как захватить NSData с помощью хэша SHA1 в NSString?

У меня возникли проблемы с вычислением хэша SHA1 из строки и последующим помещением его обратно в другую строку. Вот что я делаю:

unsigned char hashedChars[20];
CC_SHA1([hashElements UTF8String], [hashElements lengthOfBytesUsingEncoding:NSUTF8StringEncoding], hashedChars);
NSData *hashedData = [NSData dataWithBytes:hashedChars length:20];
NSString *hash = [[NSString alloc] initWithData:hashedData encoding:NSUTF8StringEncoding];
NSLog(@"%s", hash);

Результат журнала (ноль). Я в основном создаю строку, комбинируя несколько строк, затем пытаюсь вычислить хэш, который хранится в объекте NSData, а затем извлекается и помещается обратно в хеш-строку. Когда я регистрирую hashedData, я ясно вижу результат, который кажется правильным. Это должно указывать на то, что что-то пошло не так в четвертой строке. Но что? Любая помощь приветствуется.

С уважением,

Рейндер


person Reinder de Vries    schedule 29.01.2011    source источник


Ответы (1)


SHA-1 — это 20-байтовый двоичный фрагмент, а не допустимая строка UTF-8. Вот почему NSString initWithData:encoding: терпит неудачу. Что обычно используется для представления хеш-сумм, так это строка HEX. По сути, вам нужно [hashedData description].

person Costique    schedule 29.01.2011
comment
Шикарно, со смыслом. Спасибо! - person Reinder de Vries; 29.01.2011