2013-11-14 80 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

這是一個很好的問題。看來解密有問題。我是個白癡。 –