我即将把我的Android应用程序推向市场。我最近加密了所有的服务器/客户端通信。我想知道的是,如果我的数据是使用专用密钥加密的,如果一个人反编译我的代码并提取密钥,那么首先是否值得加密数据?当数据未加密时,我的通信运行得更快。随着游戏成为一个动作游戏,滞后将是一个巨大的,有趣的杀手"根据经验,我知道这很令人沮丧。我知道加密使应用程序更安全,它使游戏玩家和服务器更安全,但它会导致巨大的滞后。安全性是否值得扣除性能?当您的代码可以被反编译时,甚至值得使用加密?我已经使用了Android Proguard但是如果有人真的想要反编译我的代码,他们会花时间来解决所有这些垃圾。
答案 0 :(得分:1)
您是否将加密密钥放在客户端代码中?嗯,这是毫无价值的,另一方面加密是完全值得的,问题是你选择了错误的方式。
答案 1 :(得分:1)
我认为,在这些假设下运作是安全的。
不要信任客户发送给您的数据,对其进行检查和验证(例如,如果有人试图通过发送修改后的位置从一个地图角落“传送”到另一个地图角落)。
仅接受有效的数据。
禁止骗子。
加密是可以的,但是当它不会损害游戏或游戏玩法时(在你的情况下确实如此)。
答案 2 :(得分:0)
我可能会使用身份验证而不是加密(散列您发送的所有数据,以便您可以在服务器端验证它)。这适用于普通游戏信息,因为不需要保密。除非您发送私人用户信息,如姓名,年龄,信用卡信息等,我建议您使用普通身份验证,这比加密快得多。您可以使用非常简单的哈希函数,或者如果您认为您的游戏确实激励人们篡改它,那么您可以使用军事级哈希函数,如SHA-256或更高版本。但无论您使用哪种哈希方案,它都应该比实现适当的加密方案少得多的时间/资源消耗。