如果某人反编译您的.apk文件,他们可以以某种方式查看您签名的证书和/或SHA1吗?
我问的原因是我理解在Android代码中将类似秘密密钥的东西放到restful API中是不明智的,因为有人可以反编译.apk然后以纯文本格式查看密钥.这让我想到了 – 其他敏感信息可能会反编译显示出什么?特别是因为某些API使用您应用的SHA1来验证您的应用,并确保只允许它调用API方法.
解决方法
每个APK都在构建过程中签名.在调试版本中,使用调试密钥进行签名并登录发布模式,您必须使用
setup keys.
一般来说,签名允许一个人验证文档的来源,在这种情况下是APK.它通常有以下步骤:
>您计算要保护的文档的哈希值.
>您使用私钥加密哈希.
>您在其中嵌入了文档的哈希值(在Android的情况下,它是meta-inf / CERT.SF)
>您将文档与公钥一起分发(在Android的情况下,它是meta-inf / CERT.RSA)
文档的接收者可以重新计算文档的散列,并通过使用公钥解密签名,将其与文档创建时计算的散列进行匹配.
哈希值通常是SHA-1哈希值.这并不是秘密,因为它需要验证文档的真实性.
不幸的是,这种机制不能用来保护任何秘密.签名用于证明数据的真实性,而不是用于保护秘密.
就保护REST API的密钥而言,将密钥保存在APK中肯定不是一个好主意,因为反编译器可以查找它.
使用code obfuscators可以为您提供一定程度的保护,防止反编译器.
可以应用的另一种技术如下:
>为应用程序提供登录工具.>成功登录后,返回API密钥作为对app的响应.确保您使用https作为登录API>将API密钥保存在内存中,并在需要时使用它.