【问题标题】:Get encrypted text as NSString instead of NSData获取加密文本作为 NSString 而不是 NSData
【发布时间】:2014-06-22 19:07:50
【问题描述】:

如何在 Objectice -C 中将加密数据作为字符串而不是 NSData 对象获取? 我需要将此加密文本发送到 >net 方法,解密过程是 .Net 代码中的句柄。 或者任何人都可以帮助我在 iOS 中加密文本并在 >net 中解密?

从评论中添加 - Zaph
我正在使用此代码:

StringEncryption *crypto = [[StringEncryption alloc] init];
NSData *_secretData = [SearchKey dataUsingEncoding:NSUTF8StringEncoding];
CCOptions padding = kCCOptionPKCS7Padding;
NSData *key = [_key dataUsingEncoding:NSUTF8StringEncoding];
NSData *encryptedData = [crypto encrypt:_secretData key:key padding:&padding];

我需要将 encryptedData 发送到 .Net。但是我不知道如何将 NSData 发送到 .Net 方法,所以我尝试将这个 encryptedData 转换为 NSString,不幸的是它给了我零。我尝试使用 base64EncodedStringWithOptions,它在我解密时也会出错。

【问题讨论】:

  • 当然,这里有帮助。写代码不是。学习,研究,写你能写的最好的。如果它不起作用,请返回此处并提供问题代码并提供帮助。
  • 数据加密产生 8 位字节,而不是 ASCII 字符。因此需要一些编码,通常是 Base64。
  • 加密数据必须按 8 位字节处理,而不是常规字符。如果您试图将数据视为字符,则不可避免地会破坏它并且它不会破译。如果需要字符串进行传输,将 8 位字节编码为 Base64。
  • 什么是 StringEncryption 类?什么 .new 类?没有显示的是模式,如果 CBC(它应该使用 CBC 移动),iv 和密钥长度。密钥不应该是字符串(密码)并且密钥应该是正确的长度。那么这些东西在 StringEncryption 和 .net 中是如何处理的呢?

标签: ios aes


【解决方案1】:

您可以将 NSData 转换为 base 64 字符串。 对于 iOS 7,NSData 有这两种方法:(直接引用 Appledoc)

base64EncodedDataWithOptions :使用给定选项从接收者的内容创建一个 Base-64、UTF-8 编码的 NSData。

base64EncodedStringWithOptions :使用给定选项从接收者的内容创建一个 Base-64 编码的 NSString。

【讨论】:

  • 我正在使用这个代码 StringEncryption *crypto = [[StringEncryption alloc] init] ; NSData *_secretData = [SearchKey dataUsingEncoding:NSUTF8StringEncoding]; CCOptions 填充 =kCCOptionPKCS7Padding; NSData *encryptedData = [crypto encrypt:_secretData key:[_key dataUsingEncoding:NSUTF8StringEncoding] padding:&padding];我需要将 encryptedData 发送到.Net。但我不知道如何将 NSData 发送到 .Net 方法,所以我尝试将这个 encryptedData 转换为 NSString,不幸的是它给了我 nil。我尝试使用 base64EncodedStringWithOptions,当我解密时它也给出错误......
  • 为问题的格式和问题的连续性添加了评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 2012-11-22
  • 2014-01-15
  • 1970-01-01
  • 2018-01-04
  • 2017-07-23
相关资源
最近更新 更多