3

我正在开发一个使用受版权保护的 pdf 文件的 ios 应用程序。我正在寻找一些简单的方法来混淆文件以确保安全,这些方法不需要我通过额外的大众市场 CCATS 加密审查过程,但也将确保版权所有者我已尽我所能保护他们的数据安全。我当然用密码保护文件,但我想更进一步。是否有一种简单的方法来异或或以其他方式散列或混淆我将在我的服务器上托管的 pdf 文件,然后让 ios 设备下载它并使用 Objective-c 代码将其恢复为常规密码保护的 pdf 文件,以便它可以保存它在文档目录中(我并不担心它在设备上的安全性,就像它在服务器上一样)。我认为这对于任何文件类型都是相同的。

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

非常感谢!

这里有一个关于 CCATS 限制的答案供参考…… 如果使用简单的 XOR 密码,需要申请 CCATS 吗?

4

1 回答 1

6

但是,您正在下载文件,您可能最终会得到一个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

这表明了应用更长模式的最简单的方法:

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];

It'd be slightly faster to proceed in 32-bit steps, but the saving to disk is probably going to be the only thing that has any significant sort of cost and that's at least very clear.

于 2012-05-18T17:10:30.380 回答