Конвертировать unsigned char в NSString - PullRequest
1 голос
/ 07 марта 2012

, поскольку я очень новичок в этом вопросе, этот вопрос может показаться тривиальным, поэтому, пожалуйста, не называйте меня по имени моих родителей ... У меня есть unsigned char и NSString .. Я хочу присвоить значение char для строка ... это фрагмент кода ..

NSString *passwordDgst = @"somepassword";
unsigned char passwordDgstchar[CC_SHA512_DIGEST_LENGTH];
CC_SHA512(passwordDgst,
          passwordDgst.length,
          passwordDgstchar);

Теперь я хочу присвоить значение unsigned char passwordDgstchar строке passwordDgst. Как мне этого добиться?

1 Ответ

4 голосов
/ 07 марта 2012

У вас есть некоторые проблемы здесь.Эта функция принимает двоичный ввод и дает двоичный вывод.Ваш код вычисляет хэш первых 12 байтов строкового объекта.Вы должны сначала преобразовать его в NSData.

NSData* input = [passwordDgst dataUsingEncoding: NSUTF8StringEncoding]; // Could use UTF16 or other if you like
unsigned char passwordDgstchar[CC_SHA512_DIGEST_LENGTH];
CC_SHA512([input bytes],
          [input length],
          passwordDgstchar);

passwordDgstchar теперь содержит дайджест в необработанном двоичном файле.Чтобы получить это, скажем, в гексе:

NSMutableString* sha512 = [[NSMutableString alloc] init];
for (int i = 0 ; i < CC_SHA512_DIGEST_LENGTH ; ++i)
{
    [sha512 appendFormat: @"%02x", passwordDgstChar[i];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...