开发者

how can I translate a NSString to NSData? And the data has the same content as the string

开发者 https://www.devze.com 2022-12-22 09:45 出处:网络
NSString * theString=@\"e88d\"; NSData * data; // something I should implement NSLog(@\"%@\", theString);
NSString * theString=@"e88d";
NSData * data;

// something I should implement

NSLog(@"%@", theString);

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

I want the results of the two printings to be the same.


AES encryption and decryption:

(1).The server:

If the plaintext is @"abcd";

The AES encrypted data(NSData data type) is "d882830c dc892036 4345839f 13c7516a"

(2).in my local app, my code is:

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

However, to decrypt data successfully, I must have a data(NSData date type) which equals to "d882830c dc892036 4345839f 13c7516a". But it is the mystring(NSString data type) not the data(NSData data type) that equals the right value.

The encryption and decryption function b开发者_如何学JAVAoth need a data(NSData data type) as input datas.

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


I think this might answer your question

How do I convert a NSString value to NSData?


the description you wanna set is not an instance specific value. It's the description of the class/object. NSData will have a description of like: 'this is a data object'. You can override this value thou by overriding the method.


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

Ofcourse you will have to inherit the NSData object for that and then override the description like code above.

PS. I dont think you wanna use description for this just explaining what the use of it is in every class.


What you might want is:


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

NSLog(@"%@", theString);
NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);


@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


How about this

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号