如果某人反编译您的.apk文件,他们会以某种方式查看您签名的证书和/或SHA1吗?
我问的原因是我理解在Android代码中将类似秘密密钥的东西放到一个安静的API中是不明智的,因为有人可以反编译.apk然后以纯文本格式查看密钥。这让我想到了 - 其他敏感信息可能会反编译显示出什么?特别是因为某些API使用您应用的SHA1来验证您的应用,并确保只允许它调用API方法。
答案 0 :(得分:5)
每个APK都在构建过程中签名。在调试版本中,它使用调试密钥签名并登录发布模式,您必须setup keys。
一般来说,签名允许用户验证文档的来源,在本例中为APK。它通常有以下步骤:
文档的接收者可以重新计算文档的哈希值,并通过使用公钥解密签名将其与文档创建时计算的哈希值匹配。
哈希值通常是SHA-1哈希值。这并不是秘密,因为它需要验证文档的真实性。
不幸的是,这种机制不能用来保护任何秘密。签名用于证明数据真实性,而不是保护秘密。
就保护REST API的密钥而言,将密钥保存在APK中当然不是一个好主意,因为反编译器可以查找它。
使用code obfuscators可以为您提供一定程度的防范反编译器的保护。
可以应用的另一种技术如下:
https
作为登录API 答案 1 :(得分:2)
如果某人反编译您的.apk文件,他们会以某种方式查看您签名的证书和/或SHA1吗?
您无需反编译即可获得与您用于签署APK的私钥对应的公钥的SHA1(或其他哈希值)。这是APK本身的一部分,可以在另一个应用程序中使用一些Java代码检索。