HardBirch

Android & Jar打包与签名过程

时间:13-10-30 栏目:安卓技术篇 作者:魔豆先生 评论:0 点击: 4,491 次

JDK中自带了一个jar包签名工具jarsigner,可用来给jar包做签名:

       jarsigner -keystore d:\x.keystore hello.jar d:\x.keystore

   此工具需要一个keystore文件,可用JDK中的keytool工具生成:

       keytool -genkey -keystore x.keystore -alias x.keystore -validity 3650

    签名前后jar包结构的对比:

 

  签名后,只有MANIFEST.MF文件内容有变,包中其他文件大小、内容、CRC值均不变,多出了.DSA和.SF两个文件。

观察MANIFEST.MF文件,只是在原基础上增加了许多文本行,象下面这样,包中每个文件占两行:

Name: world/hello.class

SHA1-Digest: aYpZC6+o+kF85h2SQhrYdZZiQc8=

Name: world/Consumer.class

SHA1-Digest: 7+0dAtnYNMoQbX1rH4rKcgBnEp0=

即是以文件为单位进行的签名校验,经测试,若包中文件内容或名字变化,jar包将不能运行,提示SHA1错误。

若将.DSA和.SF文件从包中删去,并将MANIFEST.MF文件中的校验数据删去(此文件必须以回车结尾!),则jar包又可以运行了。

 

    再次运行jarsigner,可以成功重签名,签名后jar包也可以照常运行。
生成Keystore过程详解:

cd /d C:\Program Files\Java\jdk1.7.0\bin                 输入后按回车

再输入下面命令后按回车

keytool -genkey -alias mythroad.keystore  -keyalg RSA -validity 20000 -keystore mythroad.keystore

(1)mythroad可改为Mythroad等,命令区分大小写。

(2)执行命令后会出现下面步骤:

输入keystore密码:[密码不显示,输入密码按回车即可开

再次输入新密码:[密码 不显示,输入密码按回车即可开

您的名字与姓氏是什么?

[Unknown]:  mythroad

您的组织单位名称是什么?

[Unknown]:  www.mythroad.net

您的组织名称是什么?

[Unknown]:  www.mythroad.net

您的组织名称是什么?

[Unknown]:  www.mythroad.net

您所在的城市或区域名称是什么?

[Unknown]:  HangZhou

您所在的州或省份名称是什么?

[Unknown]:  HangZhou

该单位的两字母国家代码是什么

[Unknown]:  CN

CN=mythroad, OU=www.mythroad.net, O=www.mythroad.com, L=HangZhou, ST

=HangZHou, C=CN 正确吗?

[否]:  Y

输入<mythroad.keystore>的主密码  (如果和 keystore 密码相同,按回车):

成功后将会在C:\Program Files\Java\jdk1.7.0\bin 下产生一个名为mythroad.keystore的文件

 

声明: 本文由( 魔豆先生 )原创编译,转载请保留链接: Android & Jar打包与签名过程

Android & Jar打包与签名过程:等您坐沙发呢!

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐