gpt4 book ai didi

macos - 如何使用 cocoa 在 OSX 应用程序中存储私有(private) Assets

转载 作者:行者123 更新时间:2023-12-03 16:15:03 25 4
gpt4 key购买 nike

在 iOS 上,有一个私有(private)包用于存储 Assets (3D 模型、plist 等)。用户无法直接访问这些 Assets ,因此它们存储在“安全”位置。但 Mac osx 应用程序存储在一个文件夹中,访问非常简单。

有没有办法将 Assets 存储在安全的 bundle 中?类似于 iOS 应用程序的东西?

最佳答案

快速版本:无论您做什么,积极的用户都会获得他想要的数据。而且加密很难。

长版:一旦您操作加密,您将开始面临的一个问题是 key 管理:如果您的应用程序有任何方法来恢复 key (硬编码 key 是最简单的,仅供引用),那么有动力的用户会 Handlebars 放在上面。

无论如何,如果您仍然有动力加密您的内容,您应该尝试 AES 实现,并编写一个接口(interface)来加密数据,然后将它们写入磁盘。

核心算法可以在这里找到:http://www.cs.ucdavis.edu/~rogaway/ocb/ocb-ref/rijndael-alg-fst.c (将 .c 替换为 .h 以获取 header )。要使用它,您需要一个包装器来执行以下操作:

  • 使用以下几行设置 key :

.

#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 字节 x 16 字节:

.

unsigned char plaintext[16], ciphertext[16];
(...)
rijndaelEncrypt(rijndaelKey, nrounds, plaintext, ciphertext);

要解密数据,只需将这些函数名称 Encrypt 替换为 Decrypt 即可。

你仍然需要编写读取数据的代码,并将它们写入磁盘,如果可以用 C 编写,效率会更高,但你可以选择这些例程并将它们放入 Objective-C 中方法。另外,我鼓励您阅读以下维基百科文章:http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Common_modes

加密很难,这就是为什么大多数库都失败的原因:/

关于macos - 如何使用 cocoa 在 OSX 应用程序中存储私有(private) Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22829867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com