2
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)等于正确的值。

加密和解密函数都需要 adata(NSData data type)作为输入数据。

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

4 回答 4

3

我想这可能会回答你的问题

如何将 NSString 值转换为 NSData?

于 2010-03-11T09:05:04.220 回答
1

您要设置的描述不是特定于实例的值。这是类/对象的描述。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]);
于 2010-03-11T10:10:01.063 回答
0
@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
于 2010-03-11T11:12:35.827 回答
0

这个怎么样

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]];
NSData *decryptedData = [data AES128DecryptWithKey:key];
NSString *mystring = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];
于 2010-03-12T09:37:49.517 回答