我正在构建iOS应用,但我的应用二进制文件显示了我所有的NSStrings。有没有办法加密它? 我想隐藏我的应用程序二进制文件中的所有NSStrings。
答案 0 :(得分:2)
您将无法以安全的方式加密您的应用二进制文件。您至少需要传递应用程序包旁边的密钥,以便操作系统能够在运行之前加密应用程序。当你传递应用程序旁边的密钥时,对你的应用程序感兴趣的人也可以解密它。因此,加密整个二进制文件将毫无用处。
您是否使用应用包发送密码或API密钥?
最好的协议是重新设计您的应用程序,因此不需要这些东西。您可以尝试阻止用户直接从二进制文件中读取它们,但它们始终能够获取它们。一些非常聪明的家伙已经尝试过并且失败了,所以不要浪费你的时间试图变得更好。因此,请勿提供密码或API密钥!
如果您仍想在二进制文件中发送敏感数据:
您可以尝试以下内容:
NSString *encryptedSensitiveString = @"mysensitivdatapreviosulyencpryted"; // <- this will be stored in your binary since it's a constant string
NSString *sensitiveString = [someHiddenKey decryptString:encryptedSensitiveString];
// Now you can use your sensitive string which is decrypted at runtime
如果您正在为Objective-C寻找一些加密库,您可以使用MIHCrypto framework based on OpenSSL。
答案 1 :(得分:1)
正如某人所说,动态构建或解密字符串是一种选择。
另一种方法是使用第三方应用保护系统,例如Arxan。我从来没有亲自使用它,所以不能真正推荐它,但它会进行各种混淆,以防止用户窥视你的应用程序。