【问题标题】:What is the best way to hide/encrypt a String in ObjC/C?在 ObjC/C 中隐藏/加密字符串的最佳方法是什么?
【发布时间】:2009-07-22 23:22:09
【问题描述】:

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

您建议采取哪些措施至少使这变得尽可能困难?

【问题讨论】:

    标签: iphone security encryption


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      实际上,由于这是一个封闭的平台(从您使用 iphone 标签的事实来看),即使它只是二进制中的普通十六进制字符串,也只有主要的黑客才能设法获得它。

      【讨论】:

      • 您建议采取哪些措施,至少让这件事变得尽可能困难?
      • 只需将字符串放在适当的位置 - 这对于扫描字符串的人来说毫无意义。然后始终使用 HTTPS 与您的服务器通信,以免被窥探。当然,您必须为使用 HTTPS 付出性能代价,但这是保持其秘密的唯一方法。
      • 好吧,你到底为什么需要这个字符串,是不是要尝试让它只有你的二进制文件连接到你的服务器?
      猜你喜欢
      • 2011-07-16
      • 1970-01-01
      • 2011-11-18
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多