Android签名与认证详细分析之二(CERT.RSA剖析)

一、Android证书的格式

Android签名中证书的格式采用X.509标准的版本三,不过省略了一些内容。

X.509证书格式如下图所示:


二、证书的格式示例

从Chrome浏览器中导出一个证书,打开之后的样子如下图所示:


说明:由上图可以看出,在证书中,开发者的公钥是显式存在的。

三、对CERT.RSA进行详细解析

重要说明:编写Java程序和编写Android应用App解析Apk的CERT.RSA文件,得到的结果是不一样的。按道理,都是解析的同一个文件,为什么结果不一样呢?经过我们分析,发现不一样的地方是开发者公钥,但是这是由于二者的显示格式不同导致的。App解析得到的文件时十六进制显示的,而Java解析得到的结果却是十进制显示的。我们利用Java的BigInteger编写程序,将十六进制转换为十进制,验证了我们的猜想。

明确了上面的问题之后,对CERT.RSA 文件进行详细解析,得到下图:


说明:

(1)首先,我们的通常所说的证书的签名,是生成证书的时候CA对整个证书的所有域签名的得到的,而不是对某一部分签名得到的。整个签名就是上图中部分一的最下面的一段十六进制的内容;

(2)编程中的获取到的内容实质上是就是上图中的部分二,这是一个证书的所有内容;

(3)部分一种的公钥等信息就是从部分二中得来的,可以直接在部分二中找到。

(4)可以猜测,部分一中的其他信息也是从部分二中得来,只不过编码方式不一样,所以显示不同而已。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值