Android应用中的秘密密钥的反黑客解决方案?

san*_*one 9 java android reverse-engineering secret-key

我需要在应用程序内部存储一个私有字符串键.它的值永远不会改变,并在代码中手动设置.我显然无法将其存储String为反向工程方法将其显示出来,即使应用了混淆.

你怎么建议我保护这个私钥?

我将它保存到数据库中,但也可以从电话中取出数据库.

PS.这个键是一个特殊的参数,所以这是一个重要的方法,它至关重要,任何人都不知道!这不是解密密钥.此字符串将用作加密方法(md5或类似)的参数,然后结果将发送到我们的Internet服务.

编辑

对不起,因为它太复杂了.我想我可以用尽可能少的信息得到答案.

此应用程序将允许用户将一些文本发送到Internet服务,然后将该文本发布到网站.我们需要确保文本是通过Android手机发送的,因为任何网络机器人脚本都可以模仿Android手机并发布垃圾邮件.由于类似验证码的方法在手机上不受欢迎,因此会有一个密钥通过md5(带有其他一些东西)来生成哈希码.此哈希将发送到Internet服务.Internet服务将使用相同的密钥获取md5结果,然后将其进行比较以查看发件人是移动电话还是某个机器人.

这实际上是我可以说的最大值.我希望这就够了.

Ted*_*opp 11

我建议您重新考虑您的安全架构.随应用程序一起提供的任何内容都是可发现的.(例如,Android的许可证验证库的设计使得应用程序附带了一个公钥.)

一种可能性是应用程序从服务器(通过安全套接字或https连接)检索密钥.这显然需要应用程序向服务器提交某种标识/验证(可能基于用户输入).

如果您使用密钥进行加密,那么请再看看公钥加密应该如何工作.您的应用程序应该有公共密钥; 然后,互联网服务可以使用匹配的私钥进行解密.

  • @sandalone - 听起来你应该从服务器中提取哈希键.用户可以通过电话输入凭证,以便服务器在发出密钥之前进行验证.您可以对此感到满意:散列密钥可以基于手机生成的随机数,并与凭证一起提交. (2认同)