gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 08:19:59 25 4
gpt4 key购买 nike

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

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

最佳答案

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


RNCryptManager是如何做到这一点的一个很好的例子。来自iOS5:PTL的第11章示例代码.看看:

+ (BOOL)decryptFromStream:(NSInputStream *)fromStream
toStream:(NSOutputStream *)toStream
password:(NSString *)password
error:(NSError **)error;

它假定盐和 IV 已添加到流中(这在书中都有解释)。有关 AES 加密的更一般性讨论,请参阅 Properly encrypting with AES with CommonCrypto .

有关其使用的示例,请参阅 CPCryptController.m在同一个项目中。

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

更一般的答案是,您使用 CCCryptorCreate 创建一个加密器,然后为每个 block 调用 CCCryptorUpdate。然后你调用 CCCryptorFinal 来完成这一切。

关于iphone - IOS - 如果文件太大而无法将其全部加载到内存中,我如何使用 AES 解密大文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9724851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com