Objective c XOR或其他简单的文件混淆方法ios objective c

Objective c XOR或其他简单的文件混淆方法ios objective c,objective-c,ios,xcode,pdf,encryption,Objective C,Ios,Xcode,Pdf,Encryption,我正在开发一个使用受版权保护的pdf文件的ios应用程序。我正在寻找一些简单的方法来模糊文件的安全性,这将不需要我通过额外的大众市场CCAT加密审查过程,但也将确保版权持有人我已经尽了我的一份力量来保持他们的数据安全。我当然会对文件进行密码保护,但我想再进一步。是否有一种简单的方法可以对我将托管在服务器上的pdf文件进行XOR或其他哈希或模糊处理,然后让ios设备下载该文件,并使用objective-c代码将其还原为常规密码保护的pdf文件,以便将其保存在documents目录中(我不担心它在设

我正在开发一个使用受版权保护的pdf文件的ios应用程序。我正在寻找一些简单的方法来模糊文件的安全性,这将不需要我通过额外的大众市场CCAT加密审查过程,但也将确保版权持有人我已经尽了我的一份力量来保持他们的数据安全。我当然会对文件进行密码保护,但我想再进一步。是否有一种简单的方法可以对我将托管在服务器上的pdf文件进行XOR或其他哈希或模糊处理,然后让ios设备下载该文件,并使用objective-c代码将其还原为常规密码保护的pdf文件,以便将其保存在documents目录中(我不担心它在设备上的安全性,也不担心它在服务器上的安全性)。我假设这对任何文件类型都是一样的

因此,为了澄清,我正在桌面上寻找一种简单的XOR或哈希混淆/加密方法,该方法具有相应的目标c代码,ios设备可以在下载后快速解码我的文件并将其保存到documents目录

非常感谢

以下是一个关于CCAT限制的答案,供参考。。。

无论您如何下载该文件,最终可能会得到一个
NSData
?如果是这样,无论您在哪里都可能会遇到这样的情况:

[myData writeToFile:...]
只需快速遍历所有字节并应用XOR。假设它是一个密集的8位模式,那么:

/* assuming myData is mutable... take [data mutableCopy] if required */
uint8_t *bytes = (uint8_t *)[myData mutableBytes];

for(int index = 0; index < [myData length]; index++)
    bytes[index] ^= 0xe8; // or whatever your mask is
/*假设myData是可变的…如果需要,请获取[data mutableCopy]*/
uint8_t*字节=(uint8_t*)[myData可变字节];
对于(int index=0;index<[myData length];index++)
字节[索引]^=0xe8;//或任何掩码
这表明了应用更长模式的最简单的方法:

uint8_t *bytes = (uint8_t *)[myData mutableBytes];
uint8_t pattern[] = {0xe8, 0xf4, 0x98, 0x32, 0x63}; // or whatever
const int patternLengthInBytes = 5;

for(int index = 0; index < [myData length]; index++)
    bytes[index] ^= pattern[index % patternLengthInBytes];
uint8_t*字节=(uint8_t*)[myData可变字节];
uint8_t模式[]={0xe8,0xf4,0x98,0x32,0x63};//或其他
常量int pattern长度字节=5;
对于(int index=0;index<[myData length];index++)
字节[索引]^=模式[索引%patternLengthInBytes];

以32位的步骤进行操作会稍微快一点,但保存到磁盘可能是唯一有重大成本的事情,这一点至少非常清楚。

这太好了,我用cocoa应用程序实现了它的神奇功能,并保存到桌面上。对于这些1mb文件来说,这有点耗费时间,但我认为我可以重新计算模式长度或部分地对其进行xor以修复该问题。这是一个愚蠢的问题,但由于要将其恢复使用相同的方法(基本上再次对数据运行该方法)?正如注释所示,它不喜欢“可变字节”,而是“字节”工作得很好,为了时间起见,我将for循环的引用更改为一个较小的数字,但它给了我同样的效果,让全世界都看不到pdf。再次感谢!
NSMutableData
mutableBytes
,但标准的
NSData
没有。你不应该对你访问的数据进行变异通过
bytes
,如果您看到任何奇怪的行为,无论是现在还是将来版本的操作系统,这可能是一个明智的第一件事。感谢您的澄清!我将只使用
NSMutableData
。如果您只想保护您的IP,您真的需要CCAT吗?如果您使用加密来保护知识产权(=受版权保护的材料)。