代码之家  ›  专栏  ›  技术社区  ›  erotsppa

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

  •  1
  • erotsppa  · 技术社区  · 15 年前

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

    你会建议什么样的措施,至少让这件事变得尽可能困难?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Kendall Helmstetter Gelner    15 年前

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

    有多种方法可以解决这个问题,但它们都是基于服务器的——客户机中的任何东西都可以并且将被黑客看到。客户所说的任何话都必须被当作谎言对待,因为有时候会是这样。

        2
  •  1
  •   ewanm89    15 年前

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

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