在ObjC / C中隐藏/加密字符串的最佳方法是什么?

时间:2009-07-22 15:06:20

标签: iphone security encryption

我的代码中有一个字符串,当我与服务器通信时,我将其用作秘密。什么是加密此字符串以确保黑客无法通过在运行时搜索我的二进制文件或查看内存来找到它的最佳方法是什么? (如果可能的话可以防止?)

你会建议采取哪些措施,至少使其尽可能难以实现?

2 个答案:

答案 0 :(得分:2)

更好的方法是监控服务器的使用情况并尝试检测与您的应用程序不匹配的使用模式 - 例如知道它总是在另一个之前发出一种请求,或者您传递的iPhone ID作为呼叫的参数未被多个来源过度使用。您可以在应用首次启动时进行初始呼叫,并在服务器上记录电话ID以允许其他呼叫。

有多种方法可以解决问题,但它们都是基于服务器的 - 客户端中的任何内容都可以被黑客看到。客户所说的任何事情都必须始终被视为谎言,因为有时会是这样。

答案 1 :(得分:1)

从技术上讲,这是不可能的,在连接之前解密之后,总是至少可以使内存刮掉代码,因为代码中已经提供了所需的整个解密算法。反汇编将允许直接从二进制文件中解密数据。

在实践中,因为这是一个封闭的平台(从您使用iphone标签的事实),即使它只是二进制文件中的普通十六进制字符串,它也只会是主要的黑客才能获得它。