Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中隐藏translator API密钥_Java_Android_Api_Google Maps_Yandex - Fatal编程技术网

Java 如何在android中隐藏translator API密钥

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

我在我的应用程序中使用yandex和google translate,当然有唯一的API密钥,但每个人都可以通过反编译我的应用程序来窃取它。我如何隐藏它?

如果我是你,我将租用一台服务器(可能是亚马逊),创建一个数据库,并用简单的加密字符串(散列等)插入我们的api密钥

然后您可以创建一个由您的android packageName运行的服务

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"