Как я могу перевести NSString в NSData? И данные имеют тот же контент, что и строка - PullRequest
2 голосов
/ 11 марта 2010
NSString * theString=@"e88d";
NSData * data;

// something I should implement

NSLog(@"%@", theString);

NSLog(@"%@",[data description]);

Я хочу, чтобы результаты двух печатных изданий были одинаковыми.


AES-шифрование и дешифрование:

(1). Сервер:

Если открытый текст @"abcd";

AES зашифрованный data(NSData data type) является "d882830c dc892036 4345839f 13c7516a"

(2). В моем локальном приложении мой код:

NSData*data=[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]]; 
NSString * mystring= [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

Однако, чтобы успешно расшифровать данные, у меня должен быть data(NSData date type), равный "d882830c dc892036 4345839f 13c7516a". Но именно mystring(NSString data type), а не data(NSData data type) равняется правильному значению.

Для функций шифрования и дешифрования требуется data(NSData data type) в качестве входных данных.

- (NSData*)AES128EncryptWithKey:(NSString*)key;
- (NSData*)AES128DecryptWithKey:(NSString*)key;

Ответы [ 4 ]

3 голосов
/ 11 марта 2010

Я думаю, что это может ответить на ваш вопрос

Как преобразовать значение NSString в NSData?

1 голос
/ 11 марта 2010

описание, которое вы хотите установить, не является значением конкретного экземпляра. Это описание класса / объекта. NSData будет иметь описание вроде: «это объект данных». Вы можете переопределить это значение, переопределив метод.


- (NSString *)description {
    return @"e88d"; //normally used for class description
}

Конечно, вам придется наследовать объект NSData для этого, а затем переопределить описание, как приведенный выше код.

PS. Я не думаю, что вы хотите использовать описание для этого, просто объясняя, как его использовать в каждом классе.


Что вам может понадобиться:


NSString * theString=@"e88d";
NSData * data=[theString dataUsingEncoding:NSUTF8StringEncoding];

NSLog(@"%@", theString);
NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
0 голосов
/ 12 марта 2010

Как насчет этого

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]];
NSData *decryptedData = [data AES128DecryptWithKey:key];
NSString *mystring = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];
0 голосов
/ 11 марта 2010
@interface NSString (Joke)
- (NSString *)description;
@end
@implementation NSString (Joke)
- (NSString *)description
{
    return @"Panda!";
}
@end

@interface NSData (Joke)
- (NSString *)description;
@end
@implementation NSData (Joke)
- (NSString *)description
{
    return @"Panda!";
}
@end
...