如果有人反编译您的Android应用程序,他们可以看到签名证书吗?

如果某人反编译您的.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密钥保存在内存中,并在需要时使用它.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...