- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个使用受版权保护的 pdf 文件的 ios 应用程序。我正在寻找一些简单的方法来混淆文件以确保安全,这些方法不需要我通过额外的大众市场 CCATS 加密审查流程,但也将确保版权所有者我已尽我所能来保护他们的数据安全。我当然用密码保护文件,但我想更进一步。有没有一种简单的方法来异或或以其他方式散列或混淆我将托管在我的服务器上的 pdf 文件,然后让 ios 设备下载它并使用 objective-c 代码将其恢复为常规密码保护的 pdf 文件,以便它可以保存它在文档目录中(我并不担心它在设备上的安全性,就像它在服务器上时一样)。我假设这对于任何文件类型都是一样的。
所以为了澄清,我正在我的桌面上寻找一种简单的 XOR 或 Hash 混淆/加密方法,它具有相应的 objective-c 代码,ios 设备可以使用它在下载后快速解码我的文件并将其保存到文档目录。
非常感谢!
这里有一个关于CCATS limitations的回答,供引用... Need to apply for CCATS if using simple XOR cipher?
最佳答案
无论您以何种方式下载文件,您都可能以 NSData
结束?如果是这样,无论您身在何处,都可能遇到这样的事情:
[myData writeToFile:...]
只需快速遍历所有字节并应用异或。假设它是一个密集的 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];
按 32 位步骤进行会稍微快一些,但保存到磁盘可能是唯一具有任何显着成本的事情,而且至少非常清楚。
关于objective-c - 异或或其他简单的文件混淆方法 ios objective c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10656721/
我是一名优秀的程序员,十分优秀!