SafetyNet 文档(https://developer.android.com/training/safetynet/attestation https://developer.android.com/training/safetynet/attestation)指出证明令牌中返回的名为 apkCertificateDigestSha256 的字段是Base-64 encoded representation(s) of the SHA-256 hash of the calling app's signing certificate(s)
.
我可能会误解它的含义,因为我的数据不匹配。如果我调查我的证书指纹,我会得到 SHA256 字段,该字段的长度为 32 个字节。当我尝试用 base64 对其进行编码时,我得到了更长的字符串。这是用字符串制作的示例结果hello world
sha256 散列然后编码为 base64:Yjk0ZDI3Yjk5MzRkM2UwOGE1MmU1MmQ3ZGE3ZGFiZmFjNDg0ZWZlMzdhNTM4MGVlOTA4OGY3YWNlMmVmY2RlOQ==
与此同时,谷歌证明令牌返回更短的哈希值,这些哈希值从 Base64 解码显示出看似随机的值。例如这个:EmGH9u67SiSyLuvZCoAN+R+NU/yHP29gSmoUgvNtehk=
解码后这没有任何意义。
如何获得与 google 根据我的证书获得的结果相同的结果?为什么他们的 sha256 哈希值不是 32 字节长?
正如迈克尔在评论中的建议,问题是我使用指纹的文本表示而不是二进制数据。通过更改这一细节,我设法获得了与 Google 返回的结果相同的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)