[转载]Android与Java签名机制与API

签名的两种方式

  1. 利用keystore文件进行签名
  2. 利用.pk8加上.pem进行判断

讲解android签名过程文章

Android code signing:自备梯子
Signature & Certification

 查看包签名状态 jarsigner -verify -verbose -certs V2.1.0-E1-20130804.0535.zip

 

如何找到签名apk包的签名

unzip -q -c test.apk META-INF/CERT.RSA|openssl pkcs7 -inform DER -print_certs -out cert.pem
该命令会生成cert.pem文件,文件的样式是:

subject=/C=1111/ST=111/L=111/O=111/OU=111/CN=111
issuer=/C=1111/ST=111/L=111/O=111/OU=111/CN=111
-----BEGIN CERTIFICATE-----
MIICIzCCAYygAwIBAgIEUiBjKzANBgkqhkiG9w0BAQUFADBVMQ0wCwYDVQQGEwQx
MTExMQwwCgYDVQQIEwMxMTExDDAKBgNVBAcTAzExMTEMMAoGA1UEChMDMTExMQww
CgYDVQQLEwMxMTExDDAKBgNVBAMTAzExMTAgFw0xMzA4MzAwOTE3MzFaGA8yMDY4
MDYwMjA5MTczMVowVTENMAsGA1UEBhMEMTExMTEMMAoGA1UECBMDMTExMQwwCgYD
VQQHEwMxMTExDDAKBgNVBAoTAzExMTEMMAoGA1UECxMDMTExMQwwCgYDVQQDEwMx
MTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJcq0GbxEn1eeNkXne/7pnSl
6wqAaAp6mQqsDkzRBv8fuPE6lL4IObGQdgogve+B9UwbBW1l6xdCIvNlTjqKCyUs
/D+jyhwCdKIrg3L5wUqvr3cfsstk0leVZElLZFYMxOIWajv9oB/eVxe8xxYTSUNb
4uRIUmK5J5K/nBtYwlCxAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAkCBHUxAzU3hr
F7wuwlQbqju9njkbzGybq6P7A4WPXOh7RsXhdYYPwO74DwlOM1NySDOLQMM0PZqy
sZ3wM9iDURTn1OVrrUC1DcrritYghtSol11Z73G51Pr5bTzYN6swQ2ukFGAw4fdU
AXxAZmLtive5XmPBKQguL0IiFsqZzKg=
-----END CERTIFICATE-----
其中BEGIN CERTIFICATE和END CERTIFICATE即为所需签名信息

keystore文件转为pem文件

Converting a .jks Key Store to a .pem Key Store:这篇文章讲述了如何将keystore文件转换为pem文件
其中的主要命令就是

keytool -importkeystore -srckeystore client.jks -destkeystore client.pkcs -srcstoretype JKS -deststoretype PKCS12

其中.jks文件即为我们常用的.keystore文件

openssl pkcs12 -in client.pkcs -out client.pem

如何判断签名

判断的方式就是判断利用签名apk包生成的pem签名与我们自己的pem签名是否一致
判断的脚本可以参见附件judge.sh
主要的用法:.

/judge.sh -z xxx.apk -f xxx.pem -d dir


其中-z选项: 后面跟的是你的签名的apk文件
-f选项: 后面跟的是你自己的pem文件「
-d选项: 后面跟的是你的包含pem文件的文件夹
注意:
-z选项必填
-f 和 -d二者选项至少包含一个或者都存在

猜你喜欢

转载自qianjigui.iteye.com/blog/1933344