首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IOS -如果文件太大而无法将其全部加载到内存中,我如何AES解密大文件?

IOS -如果文件太大而无法将其全部加载到内存中,我如何AES解密大文件?
EN

Stack Overflow用户
提问于 2012-03-16 01:18:49
回答 1查看 8.2K关注 0票数 16

我知道如何加密和解密一个NSData,但这需要先将整个文件加载到内存中。

假设我有一个名为data.dat.enc的50mb加密文件,我如何才能将其解密为data.dat文件,而不必首先将其全部加载到内存中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-16 05:45:33

编辑:此代码已由http://github.com/rnapier/RNCryptor扩展。

RNCryptManager就是一个很好的例子。它来自iOS5:PTL的第11章示例代码。请看:

代码语言:javascript
复制
+ (BOOL)decryptFromStream:(NSInputStream *)fromStream
                 toStream:(NSOutputStream *)toStream
                 password:(NSString *)password
                    error:(NSError **)error;

它假设盐和IV已经被放在流的前面(这在书中都有解释)。有关AES加密的更多一般性讨论,请参阅Properly encrypting with AES with CommonCrypto

有关其用法的示例,请参阅同一项目中的CPCryptController.m

如果有足够的兴趣,我可以把这个对象拉出来,并将其作为一个独立的项目来支持,而不仅仅是一段示例代码。这对人们来说似乎是相当有用的。但是按原样集成并不是那么困难。

更一般的答案是使用CCCryptorCreate创建一个加密程序,然后为每个块调用CCCryptorUpdate。然后调用CCCryptorFinal来完成任务。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9724851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档