Я использую функцию MD5, и Кодирование Base64 для генерации Пользовательского Секрета (раньше входил в слой данных используемого API),
Я сделал код в JavaScript, и он прекрасен, но в Objective C я борюсь с BOM
мой код:
NSString *str = [[NSString alloc]
initWithFormat:@"%@%@%@%d",
[auth uppercaseString],
[user uppercaseString],
[pwd uppercaseString],
totalDaysSince2000];
NSString *sourceString = [[NSString alloc] initWithFormat:@"%02x%02x%02x%@",
0xEF,
0xBB,
0xBF,
str];
NSString *strMd5 = [sourceString MD5];
NSData *sourceData = [strMd5 dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64EncodedString = [[sourceData base64EncodedString] autorelease];
с помощью кода выше я вхожу в память:
(источник: balexandre.com)
ведьма не то, в чем я действительно нуждаюсь...
Я даже попробовал
"%c%c%c%@", (char)239, (char)187, (char)191, str
без удачи...
использование UTF8String
не делает шва для добавления BOM автоматически как в C# :-(
Как я могу добавить BOM правильно?
Попробуйте встроить спецификацию непосредственно в строку формата в виде экранированных символьных литералов:
NSString *sourceString = [[NSString alloc] initWithFormat:@"\357\273\277%@", str];
Возможно, вам придется добавить спецификацию к объекту NSData, а не к NSString. Примерно так:
char BOM[] = {0xEF, 0xBB, 0xBF};
NSMutableData* data = [NSMutableData data];
[data appendBytes:BOM length:3];
[data appendData:[strMd5 dataUsingEncoding:NSUTF8StringEncoding]];