ios - 使用 MonoTouch 的 AES 加密

标签 ios encryption xamarin.ios cryptography aes

我正在构建一个 Monotouch 应用程序,它从使用 AES 加密的服务器下载数据。然后我需要在访问文件时解密这些数据。

使用 MonoTouch 执行此操作的最佳方法是什么? iOS AES 解密是apparently hardware accelerated因此,理想情况下,我想调用 CCCrypt。我对 MonoTouch 有点 n00b,所以有人知道该怎么做吗?

或者是否有更好的方法在 MonoTouch 中进行 AES 解密?

最佳答案

MonoTouch 在其类库中提供 AES 支持,例如RijndaelManaged类(class)。

但是,您需要更多地了解它是如何加密的(密码模式、填充模式、 key 大小)才能解密文件。此外,根据文件大小,您可能希望在内存中(更安全)解密文件(如果文件较小)或临时文件(如果较大)。

注意事项:

  • Rijndael 是被选为 AES 的算法的原始名称;

  • AES 是 Rijndael 的子集(只有一个 block 大小,128 位),因此您可以使用 RijndaelManaged 执行 AES 支持的所有操作;

  • 目前 MonoTouch 不使用 CommonCrypto(它使用来自 Mono 的托管实现),因此您不会获得硬件加速。这可能会在未来的版本中发生变化(并且对于在其应用程序中使用 RijndaelManaged 的人来说将是兼容的,即只需重新编译)。

编辑

MonoTouch 5.3.3 (alpha)现在默认使用 CommonCrypto 实现,包括 AES 和 SHA1 的硬件加速(如果可用)。

关于ios - 使用 MonoTouch 的 AES 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9827015/

相关文章:

c# - Xamarin studio IDE 连接联网 MAC?

ios - iOS应用程式当机-[NSURL initFileURLWithPath :]

iphone - AVAudioPlayer 在 iPhone 5 上不工作

ios - Storyboard - 设置委托(delegate)

ios - 在支持通用链接的两个不同应用程序上支持同一个域..?

java - 从文件中解密字符串时,RSA 中的解密会抛出 BadPaddingException

php - 加载由 blenc 加密的页面时出错(C 和 PHP 代码)

javascript - Crypto++ 和 node.js 组合

objective-c - 游戏套件(GKSession): Is there a priority order when GKSession decides to use Wifi or Bluetooth (if both are available)

ios - 设置背景图片导航栏