如何在android上隐藏公钥?

时间:2011-04-11 13:26:34

标签: java android security key

Android的安全手册说,将公钥(用于Android市场)保存为字符串是不安全的,它应该以某种方式隐藏/编码。 有人可以告诉我如何做到这一点吗?

(我没有单独的服务器,因此无法存储在那里)

UPD。相信,这是一个非常常见的任务,不是与Android相关,而是与其他应用相关。

3 个答案:

答案 0 :(得分:1)

page you linked to的相关文字是:

  

重要提示:保护您的公钥不受恶意用户的侵害   黑客,不要将您的公钥嵌入整个文字字符串。   相反,在运行时从片段或使用位构造字符串   操纵(例如,带有一些其他字符串的XOR)来隐藏   实际的关键。密钥本身不是秘密信息,但你不是   想让黑客或恶意用户轻松取代   公钥与另一把钥匙。

这几乎是你需要知道的全部内容。知道您的公钥的人不会受到伤害,这里潜在的危害是有人用他们自己的公钥替换您的程序中的公钥,以便将应用内购买转移到他们自己的帐户。

他们建议你通过将密钥存储在单独的部分中或者用其他字符串对密钥进行异或来使攻击者更加困难。现在,他们不仅要将键重叠在你的键上,而且要弄清楚你正在对字符串进行哪些转换,并使自己的键适合该模式。这是更多的工作,可能会阻止偶然的攻击者,但不会阻止那些真正有决心的人。

答案 1 :(得分:0)

如果您使用Keytool实用程序,这一切都已完成。您将在本地计算机上获得一个.keystore文件,其中包含使用密码加密的私钥;将该文件和密码保密,确保您的安全。

http://developer.android.com/guide/publishing/app-signing.html

事实上,我相信Eclipse的Android插件甚至会自动为您完成所有这些。

答案 2 :(得分:-3)

在公钥上,您可以将其哈希并将其另存为哈希值。更好的是,当你需要获得散列值时,将哈希值加入你想知道的东西。可能是用户名或ESN。看看android.telephony.TelephonyManager.getDeviceId()