创建并验证app签名
app签名基于jar签名,jar签名主要用于验证java class文件开发者。但是App签名跟jar签名还是有些区别的,App签名对一些元数据和资源也进行了签名和验证。
首先需要在一个可运行apk文件中删除 meta-inf 文件夹。
可以使用winrar打开apk文件,然后删除 meta-inf 文件
使用keytool工具生成一个密钥存储器 keystore来存放签名app用到的私钥。
keytool -genkey -v -keystore 1.key -alias miyue -keyalg rsa -keysize 2048 -validity 100
参数意义:
-keystore:keystore 名称
-alias:密钥别名
-keyalg:密钥算法
-keysize:密钥大小
-validity:有效期天数
生成密钥时需要记住自己创建的口令,并且生成后将密钥放在安全的位置。
使用生成的密钥去对apk进行签名,使用工具jarsigner完成,命令如下:
jarsigner -verbose -sigalg md5withrsa -digestalg sha1 -keystore 1.key c3.apk miyue
参数意义:
-verboe:输出详细信息
-sigalg:签名算法
-digestalg:hash算法
-keystore:密钥存储器名称
-[c3.apk]:需要签名的apk名称
-[miyue]:密钥别名
可以看到签名时新建了 meta-inf 文件夹以及其中的证书相关文件
至此,对apk进行了签名,也可以看做是对原有apk进行了签名更新或替换
下一步对签名的apk进行验证,命令比较简单
jarsigner -verbose -verify c3.apk
可以查看到对哪些资源文件的验证以及验证内容