SHA和SHA1证书如何像Facebook那样保护Android应用程序上的API?

SHA和SHA1证书如何像Facebook那样保护Android应用程序上的API?,android,security,facebook-graph-api,sha1,sha,Android,Security,Facebook Graph Api,Sha1,Sha,我知道什么是SHA和SHA1加密算法。我还知道如何从计算机上提取这些数据 但是我在互联网上搜索了很多,仍然无法得到关于如何使用这些密钥来保护你在Android应用程序上使用的API的正确解释 例如,Facebook需要在开发者控制台上输入您系统中的SHA1密钥以及应用程序的软件包名称,如果您输入的密钥错误,他们的API将无法在您的应用程序上运行 这个机制是如何运作的?他们如何在你的应用程序上验证这一点?Facebook正在利用API交互提供相同类型的保证 构建应用程序时,您的私钥用于对结果进行数

我知道什么是SHA和SHA1加密算法。我还知道如何从计算机上提取这些数据

但是我在互联网上搜索了很多,仍然无法得到关于如何使用这些密钥来保护你在Android应用程序上使用的API的正确解释

例如,Facebook需要在开发者控制台上输入您系统中的SHA1密钥以及应用程序的软件包名称,如果您输入的密钥错误,他们的API将无法在您的应用程序上运行

这个机制是如何运作的?他们如何在你的应用程序上验证这一点?

Facebook正在利用API交互提供相同类型的保证

构建应用程序时,您的私钥用于对结果进行数字签名。签名验证生成是由密钥所有者创建的,并且随后没有修改

在应用程序中,存储了可通过编程方式访问的签名证书

在Facebook SDK中,使用。生成的keyhash为,与进行比较


因此,通过提供带外密钥散列(即导出并进入开发者网站),Facebook能够验证带内实例(即编译到应用程序并包含在API请求中)。

非常感谢。我一直在寻找这个答案。如果可以的话,你能给我提供一个详细的帖子或者类似的东西吗?请原谅我没有获得足够的信息。我提供的第一个链接提供了概念的一般描述,然后是。从开发人员的角度来看,还有一个问题涉及到流程细节。您是否知道iOS中是否存在类似的机制?@chuckx我有一个疑问,但是这个签名证书可以通过修改应用程序并再次辞职来硬编码。我说的对吗?@ananthusbramanian正常的工作流程假设打算分发的APK是使用开发者私钥签名的。当发布应用程序的更新版本(可能有一些修改,如错误修复、新功能等)时,将生成一个新的签名证书,以证明其真实性。试图修改已签名APK的第三方将使签名无效。在这种情况下,除非您拥有私钥,否则无法创建新的有效签名。