Java 如何在android中隐藏translator API密钥
我在我的应用程序中使用yandex和google translate,当然有唯一的API密钥,但每个人都可以通过反编译我的应用程序来窃取它。我如何隐藏它?如果我是你,我将租用一台服务器(可能是亚马逊),创建一个数据库,并用简单的加密字符串(散列等)插入我们的api密钥 然后您可以创建一个由您的android packageName运行的服务Java 如何在android中隐藏translator API密钥,java,android,api,google-maps,yandex,Java,Android,Api,Google Maps,Yandex,我在我的应用程序中使用yandex和google translate,当然有唯一的API密钥,但每个人都可以通过反编译我的应用程序来窃取它。我如何隐藏它?如果我是你,我将租用一台服务器(可能是亚马逊),创建一个数据库,并用简单的加密字符串(散列等)插入我们的api密钥 然后您可以创建一个由您的android packageName运行的服务 http://example.com/API/getAPIKey/ ?packageName="yourPackageName" &androidK
http://example.com/API/getAPIKey/
?packageName="yourPackageName"
&androidKey="AJKBSASHUA9"
如果您使用POST方法,对您来说是安全的。简单地说,您根本无法在APK内部或应用程序内部执行此操作。如果有人想得到它,他们会得到的
- 你要破译它们,我会在应用程序中找到钥匙李>
- 你要把它们放到网上,安装好后取回来,我会把我的手机根目录取下来
首先,你为什么要隐藏它们?它们被分配有[Release | Debug]密钥库的SHA1指纹和你的包名,没有人可以拥有你的发布密钥库及其密码。虽然你可能无法实现150%的安全性,但你可能希望在你的应用程序中采取措施来减缓可能的攻击者。这将导致他们中的一些人拒绝开发您的应用程序,因为这不值得付出努力
OWASP移动安全项目已经发布了他们的收藏,其中的主题“破坏的加密”和“缺乏二进制保护”在您的案例中非常有趣。虽然即使是这个链接也不能为你提供一个简单的“如何做”,但我认为它可以帮助你评估你的情况 md5不是加密,而是散列。
http://example.com/API/getAPIKey/
?packageName="yourPackageName"
&androidKey="AJKBSASHUA9"