Как перехватить NSData с помощью SHA1-хэша в NSString? - PullRequest
2 голосов
/ 29 января 2011

У меня проблемы с вычислением хэша 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, я ясно вижу результат, который кажется правильным.Это должно означать, что в четвертой строке что-то идет не так.Но что?Любая помощь с благодарностью.

С уважением,

Reinder

1 Ответ

3 голосов
/ 29 января 2011

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

...