使用MonoTouch进行AES加密

时间:2012-03-22 17:02:59

标签: ios encryption xamarin.ios cryptography aes

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

使用MonoTouch执行此操作的最佳方法是什么? iOS AES解密是apparently hardware accelerated,所以我最好打电话到CCCrypt。我对MonoTouch来说有点n00b所以有谁知道怎么做?

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

2 个答案:

答案 0 :(得分:6)

MonoTouch在其类库中提供 AES 支持,例如: RijndaelManaged课程。MonoTouch 5.3.3

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

注意:

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

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

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

修改

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

答案 1 :(得分:0)

如果您有兴趣在MonoTouch下加密静态数据(即数据库),SQLCipher可能是个不错的选择(http://sqlcipher.net)。 SQLCipher的MonoTouch提供程序使用AES-256(http://sqlcipher.net/sqlcipher-for-monotouch)提供SQLite完整数据库加密。 Android上的Mono还有一个配套库,为Android提供相同的API和功能(http://sqlcipher.net/sqlcipher-on-mono-for-android

披露:我为SQLCipher的作者Zetetic工作。