apk文件签名

APK签名的作用

  • 使用特殊的key签名可以获取到一些不同的权限
  • 不同的key签名过的相同apk文件无法安装覆盖老的版本,这样可以防止已安装的应用被修改过的apk覆盖替换掉

使用命令行方式进行签名需要JDK中的两个命令行工具:keytool.exe和jarsigner.exe,它们的作用分别是生成证书和签名。

使用keytool生成专用密钥(Private Key)文件

keytool -genkey -v -keystore 密钥名.keystore -alias 密钥别名 -keyalg RSA -validity 有效天数

RSA表示密钥算法,天数可以是30000天,将近100年了。下面要输入一些密钥需要的信息:

输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
 [Unknown]: ztdx
您的组织单位名称是什么?
 [Unknown]: ztdx
您的组织名称是什么?
 [Unknown]: ztdx
您所在的城市或区域名称是什么?
 [Unknown]: ztdx
您所在的州或省份名称是什么?
 [Unknown]: ztdx
该单位的两字母国家代码是什么
 [Unknown]: cn
CN=ztdx, OU=ztdx, O=ztdx, L=ztdx, ST=ztdx, C=cn 正确吗?
 [否]: Y
正在为以下对象生成 1,024 位 RSA 密钥对和自签名证书 (SHA1withRSA)(有效期为 30,00
0 天):
 CN=ztdx, OU=ztdx, O=ztdx, L=ztdx, ST=ztdx, C=cn
输入<ZhiTongDianXun>的主密码
 (如果和 keystore 密码相同,按回车):
[正在存储 ZhiTongDianXun.keystore]

使用 jarsigner 命令对apk文件签名

jarsigner -verbose -keystore 密钥名.keystore ztdx.apk 密钥别名

输入密码正确后,开始进行签名操作,完成后不生成新的apk,会发现比原apk体积大了几十K。

命令方式取md5码

keytool -list -keystore progreading.apkkey
输入keystore密码:

别名名称:
创建日期: 2014-10-11
项类型: PrivateKeyEntry
认证链长度: 1
认证 [1]:
所有者:CN=wangweike, OU=wwk, O=wwk, L=wwk, ST=wwk, C=wwk
签发人:CN=wangweike, OU=wwk, O=wwk, L=wwk, ST=wwk, C=wwk
序列号:
有效期: 
证书指纹:
         MD5:
         SHA1:
         签名算法名称:SHA256withRSA
         版本: 3

发表评论