我确实有一个问题让我烦恼。每当您使用像Firebase数据库这样的Google API时,您都会在创建时告诉Endpoint允许您使用它的应用程序的程序包名称,以及用于对应用程序进行签名的证书的指纹。 现在,当您尝试使用其他应用程序中的API(不同的程序包名称)或更改签名证书(例如从调试切换到发布)时,Google将拒绝该呼叫。
这让我想到了。 Google如何在运行时知道签名证书指纹?
我们可以通过检查指纹使用相同的机制来保护自定义API端点吗? 获取软件包名称很简单,无需依赖,但我对证书指纹感兴趣。
我的目标是通过参数+ salt的哈希以及可能的时间戳来验证服务器上的请求。
答案 0 :(得分:1)
我对这个话题进行了更多的研究。事实证明,您可以在运行时访问签名证书,如下所示:
Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(),PackageManager.GET_SIGNATURES).signatures;
for (Signature sig : sigs) {
Log.i("App", "Signature : " + sig.hashCode());
}