在iOS上,有一个私有包,其中存储了资产(3D模型,plist等).用户无法直接访问这些资产,因此它们存储在“安全”位置.
但是Mac osx应用程序存储在一个访问非常简单的文件夹中.
有没有办法将资产存储在安全捆绑中?类似于iOS应用的东西?
最佳答案 快速版:无论您做什么,有动力的用户都可以获得他想要的数据.加密加密很难.
长版本:一旦你操作加密就会开始面临的一个问题是密钥管理:如果你的应用程序有办法恢复密钥(硬编码密钥是最简单的,仅供参考),那么一个积极的用户就会得到他的手在上面.
无论如何,如果你仍然有动力加密你的内容,你应该开始使用AES实现,并编写一个接口,它将加密数据然后将它们写入磁盘.
核心算法在那里可用:http://www.cs.ucdavis.edu/~rogaway/ocb/ocb-ref/rijndael-alg-fst.c(将.c替换为.h以获取标题).
要使用它,您需要一个包装器来执行以下操作:
>使用以下行设置密钥:
.
#define KEYLENGTH(keybits) ((keybits)/8)
#define RKLENGTH(keybits) ((keybits)/8+28)
#define NROUNDS(keybits) ((keybits)/32+6)
#define KEYBITS 256
(...)
uint32_t rijndaelKey[RKLENGTH(KEYBITS)];
unsigned char key[KEYLENGTH(KEYBITS)]; //You need to fill it with the encryption/decryption key
int nrounds = rijndaelSetupEncrypt(rijndaelKey, key, KEYBITS);
>加密数据,16字节乘16字节:
.
unsigned char plaintext[16], ciphertext[16];
(...)
rijndaelEncrypt(rijndaelKey, nrounds, plaintext, ciphertext);
要解密数据,只需将这些函数名称替换为Dectifpt加密.
您仍然必须编写将读取数据并将其写入磁盘的代码,如果它可以用C编写它会更有效但您可以选择这些例程并将它们放在Objective-C方法中.另外,我建议您阅读以下维基百科文章:http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Common_modes
加密很难,这就是大多数库失败的原因:/