加密和反编译

时间:2011-12-21 03:48:41

标签: java encryption decompiling

我即将把我的Android应用程序推向市场。我最近加密了所有的服务器/客户端通信。我想知道的是,如果我的数据是使用专用密钥加密的,如果一个人反编译我的代码并提取密钥,那么首先是否值得加密数据?当数据未加密时,我的通信运行得更快。随着游戏成为一个动作游戏,滞后将是一个巨大的,有趣的杀手"根据经验,我知道这很令人沮丧。我知道加密使应用程序更安全,它使游戏玩家和服务器更安全,但它会导致巨大的滞后。安全性是否值得扣除性能?当您的代码可以被反编译时,甚至值得使用加密?我已经使用了Android Proguard但是如果有人真的想要反编译我的代码,他们会花时间来解决所有这些垃圾。

3 个答案:

答案 0 :(得分:1)

您是否将加密密钥放在客户端代码中?嗯,这是毫无价值的,另一方面加密是完全值得的,问题是你选择了错误的方式。

答案 1 :(得分:1)

我认为,在这些假设下运作是安全的。

  • 无法信任客户。如初。
  • 服务器是权威的信息来源。

不要信任客户发送给您的数据,对其进行检查和验证(例如,如果有人试图通过发送修改后的位置从一个地图角落“传送”到另一个地图角落)。

仅接受有效的数据。

禁止骗子。

加密是可以的,但是当它不会损害游戏或游戏玩法时(在你的情况下确实如此)。

答案 2 :(得分:0)

我可能会使用身份验证而不是加密(散列您发送的所有数据,以便您可以在服务器端验证它)。这适用于普通游戏信息,因为不需要保密。除非您发送私人用户信息,如姓名,年龄,信用卡信息等,我建议您使用普通身份验证,这比加密快得多。您可以使用非常简单的哈希函数,或者如果您认为您的游戏确实激励人们篡改它,那么您可以使用军事级哈希函数,如SHA-256或更高版本。但无论您使用哪种哈希方案,它都应该比实现适当的加密方案少得多的时间/资源消耗。