2013-11-14 49 views
0

我试图加密/解密NSString并在最后返回原始字符串。下面是我的字符串转换成一个数据对象:编码用于在NSString和NSData之间转换并返回

NSData *string_data = [string dataUsingEncoding:NSUTF8StringEncoding];

而在此之后的数据被加密/解密我希望它回到原来的字符串做:

NSString *to_string = [NSString stringWithCString:[decrypted_data bytes] encoding:NSUTF8StringEncoding];

的编码似乎匹配,但当我尝试将to_string打印出到控制台时,仍然出现空白。我试过各种编码设置。它似乎没有工作。

+0

可能的重复http://stackoverflow.com/questions/6103579/nsdata-from-nskeyedarchiver-to-nsstring/17593009#17593009使用base64Encoding –

+0

我做*不*认为这是一个可能的重复。这个问题是关于将*任意*数据转换为一个字符串传递它。这个问题是关于将解密数据转换回原始字符串。 –

回答

1

用途:

NSString *to_string = [[NSString alloc] initWithData:string_data encoding:NSUTF8StringEncoding]; 

它是不是安全使用stringWithCString因为bytes缓冲你的NSData得到的是不能保证是空值终止。

+0

这也不起作用,你也必须指定编码,而不仅仅是传递数据。那是我试过的第一个方法,并将它设置为[[NSString alloc] initWithData:string_data encoding:NSUTF8StringEncoding]'didn'不管工作。 –

+1

@labdulle:您是否验证过解密数据'decrypted_data'与原始数据'string_data'完全相同? –

+1

这是一个很好的问题。看来解密有问题。我是个白痴。 –