我正在构建一个 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/