Iphone 修改iOS文件中的数据(字节)

Iphone 修改iOS文件中的数据(字节),iphone,objective-c,ios,nsdata,nsfilehandle,Iphone,Objective C,Ios,Nsdata,Nsfilehandle,我有一个大约700MB的巨大加密文件(mp4)。文件头加密约为(1MB+虚拟字节)。此文件的解密已成功完成 现在我想删除文件(同一个文件)中的(1MB+伪)加密字节&用解密字节替换它们 我怎样才能达到同样的效果? 在此方面的任何帮助都将不胜感激。提前谢谢 NSFileHandle *encVideoFile=[NSFileHandle fileHandleForUpdatingAtPath:**encVideoFilePath**]; //the data is read from fi

我有一个大约700MB的巨大加密文件(mp4)。文件头加密约为(1MB+虚拟字节)。此文件的解密已成功完成

现在我想删除文件(同一个文件)中的(1MB+伪)加密字节&用解密字节替换它们

我怎样才能达到同样的效果? 在此方面的任何帮助都将不胜感激。提前谢谢

NSFileHandle *encVideoFile=[NSFileHandle  fileHandleForUpdatingAtPath:**encVideoFilePath**];  

//the data is read from file by using readDataOfLength method & decrypted (decryptedData). 

[encVideoFile seekToFileOffset:0];
[encVideoFile writeData:decryptedData];
[encVideoFile closeFile]

我在这里面临的问题是我已经(1MB+DummyBytes)加密了&当我解密1MB+DummyBytes时,我得到大约0.9MB(解密的字节)

所以我的问题仍然存在(0.9MB+一些不需要的字节+未加密的字节)


关于如何克服的建议将很有帮助。

您是否尝试使用以下功能?它可能会帮助您删除头字节。然后可以将解密的字节放入变量中,并附加后者的值

- (NSData *)subdataWithRange:(NSRange)range;

我想您的目标是避免将整个文件读入内存,对吗?有两种解决方案,具体取决于您想要如何攻击它:

首先是一个。请记住,标题的大小不能更改

或者,您可以按照建议使用
NSFileHandle
。打开它进行“更新”,查找文件的开头,然后写入新字节。然后关上。同样,标题的大小不能更改


您的编辑表明您正在尝试“压缩”文件以删除“不需要的字节”。如果不重写文件,这是不可能的。iPhone文件系统除了文件的结尾外,没有从任何地方删除数据的机制


最好的解决方案通常是在写入头文件之前解密头文件。或者修改您的读取算法以跳过不需要的字节。

谢谢。我使用过NSFileHandler,但在将解密数据(字节)写入文件(问题中更新的代码)后,我遇到了一个问题。请帮我解决这个问题。