【问题标题】:Encoding for converting between NSString to NSData and back用于在 NSString 和 NSData 之间转换并返回的编码
【发布时间】:2013-11-27 16:21:48
【问题描述】:

我正在尝试加密/解密一个 NSString 并最终返回原始字符串。以下是我将字符串转换为数据对象的方法:

NSData *string_data = [string dataUsingEncoding:NSUTF8StringEncoding];

在数据被加密/解密后,我希望通过以下方式将其恢复为原始字符串:

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

编码似乎匹配,但当我尝试将to_string 打印到控制台时,我仍然得到一个空值。我尝试了各种编码设置。它似乎不起作用。

【问题讨论】:

  • 可能重复stackoverflow.com/questions/6103579/…使用base64Encoding
  • 我确实认为这可能是重复的。这个问题是关于将 arbitrary 数据转换为字符串以传递它。这个问题是关于将解密的数据转换回原始字符串。

标签: ios objective-c encryption nsstring nsdata


【解决方案1】:

用途:

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

使用 stringWithCString 是不安全的,因为您从 NSData 获得的 bytes 缓冲区不能保证为空终止。

【讨论】:

  • 这也不起作用,您还必须指定编码而不仅仅是传递的数据。这是我尝试的第一种方法并将其设置为[[NSString alloc] initWithData:string_data encoding:NSUTF8StringEncoding] 也不起作用。
  • @labdulle:你验证解密后的数据decrypted_data与原始数据string_data完全一致了吗?
  • 这是个好问题。好像解密有问题。我是个白痴。
猜你喜欢
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多