与apk签名有关的那贰个概念与命令

一、概念篇

一、概念篇

一 、音信摘要-Message Digest

一 、音信摘要-Message Digest

新闻摘要:在消息数据上,执行一个一方面包车型客车hash函数,生成1个永恒长度的hash值,这一个Hash值就是消息摘要,也化为数字指纹。

消息摘要:在新闻数据上,执行3个一方面包车型地铁hash函数,生成一个固定长度的hash值,这么些Hash值就是音讯摘要,也改成数字指纹。

新闻摘要特点:

音信摘要特点:

(1)无论输入信息多少长度,计算出来的新闻摘要长度总是永恒的;

(1)无论输入音讯多少长度,总计出来的新闻摘要长度总是永恒的;

(2)不可逆性,通过摘要不可能推算出音讯小编;

(2)不可逆性,通过摘要不能推算出音讯笔者;

(3)假使改动了音信,摘要会产生变化(长明文生成短摘要的Hash必然会碰上);

(3)即便改动了新闻,摘要会产生变化(长明文生成短摘要的Hash必然会撞击);

作用:不得不保险音讯的完整性,不可能保险消息的防篡改。使用景况:文件下载的MD5校验。

作用:唯其如此保障新闻的完整性,不恐怕保险消息的防篡改。使用境况:文件下载的MD5校验。

新闻摘要算法:MD5、SHA-0、SHA-1

音讯摘要算法:MD5、SHA-0、SHA-1

 

 

② 、数字签名-Signature

② 、数字签名-Signature

数字签名:音讯发送者用本人的私钥对新闻摘要加密产生的多少个字符串,加密算法确定保障旁人不能伪造生成那段字符串。那段数字字符串也是对音讯发送者产生消息真实的一个灵光认证,故称数字签名。

数字签名:消息发送者用自身的私钥对消息摘要加密发生的二个字符串,加密算法确定保障外人不能伪造生成那段字符串。那段数字字符串也是对音讯发送者发生消息真实的一个有效认证,故称数字签名。

数字签名是非对称机密算法+数字摘要技术的三结合。

数字签名是非对称机密算法+数字摘要技术的构成。

作用:保险音讯完整性、也足避防篡改。

作用:保障音讯完整性、也得避防篡改。

数字签名原理:新闻发送者将新闻摘要用私钥加密,与原作一起传送给接收者。消息接收者用公钥才能将音讯摘要解密,再利用同样的Hash函数对接到最初的小说总括发生3个消息摘要,相比两者是或不是同样。基于非对称加密算法的数字签名保险防篡改,音信摘要保险完整性。

数字签名原理:音讯发送者将音信摘要用私钥加密,与原作一起传送给接收者。新闻接收者用公钥才能将新闻摘要解密,再使用相同的Hash函数对收到原来的书文总括产生多少个音讯摘要,相比较两者是还是不是一致。基于非对称加密算法的数字签名保险防篡改,音信摘要保险完整性。

思考:为啥只对信息摘要实行数字签名?

考虑:为啥只对音信摘要进行数字签名?

加密算法普遍存在总括耗时较长的瓶颈,MD五 、SHA等消息摘要算法则不存在该难题,只针对音讯摘要实行签订契约,能够大大裁减加密内容,升高全部数字签名进度的频率。

加密算法普遍存在总括耗费时间较长的瓶颈,MD伍 、SHA等音信摘要算法则不设有该难点,只针对新闻摘要进行签字,能够大大减少加密内容,进步全部数字签名进度的频率。

 

 

三 、数字证书-Certificate

3、数字证书-Certificate

数字证书是一个经证书授权中央数字签名的包罗公开密钥拥有者音讯以及公钥的公文。

数字证书是叁个经证书授权中心数字签名的盈盈公开密钥拥有者音信以及公钥的公文。

数字证书包涵内容:

数字证书包罗内容:

证书公布单位 Issuer

证件宣布单位 Issuer

申明有效期Validity

证书有效期Validity

音信发送方的公钥

音信发送方的公钥

证件全数者 Subject

证书全数者 Subject

数字签名使用的算法

数字签名使用的算法

备注:Android
APK中的CE卡宴T.汉兰达SA是自签定的,并不须要第贰方权威机构公布依旧申明,用户可以在该地机械生成那一个自签署证书。

备考:Android
APK中的CEPAJEROT.帕杰罗SA是自签订契约的,并不需求第③方权威机构公布或然表明,用户可以在该地机械生成那些自签定证书。

 

 

贰 、Android APK三种签超方式

贰 、Android APK二种签名格局

1、jarsign和apksign工具

1、jarsign和apksign工具

jarsign —— 是Java本身自带的2个工具,能够对jar进行签字。

jarsign —— 是Java自个儿自带的一个工具,能够对jar举行签字。

signapk —— 是特意为Android应用程序apk举行签字的工具。

signapk —— 是专程为Android应用程序apk实行签订契约的工具。

相互的署名算法没有怎么分别,主如若签订契约时行使的文书不平等。

双方的署名算法没有啥样界别,首倘使签订契约时行使的文本区别。

 

 

2、keystore和pk8、x509.pem的区别

2、keystore和pk8、x509.pem的区别

jarsian
工具签名时利用的是keystore文件。Eclipse的Debug包暗中认可使用jarsign工具签名。

jarsian
工具签名时利用的是keystore文件。Eclipse的Debug包默许使用jarsign工具签名。

apksign 工具签名时使用的pk捌 、x509.pem文件

apksign 工具签名时行使的pk八 、x509.pem文件

 

 

叁 、Android中是同意利用多个keystore对apk进行签订契约的。

③ 、Android中是同意利用五个keystore对apk进行签订契约的。

jarsign签名文件:文件后缀名是签订契约算法,文件名是keystone别名。

jarsign签名文件:文件后缀名是签订契约算法,文件名是keystone外号。

apksign签名之后的apk中的META-INF写死了是CE凯雷德T的名字。

apksign签名之后的apk中的META-INF写死了是CETiguanT的名字。

 

 

4、apksign签名

4、apksign签名

eg: apksign publickey.x509.pem privatekey.pk8 input.apk output.apk

eg: apksign publickey.x509.pem privatekey.pk8 input.apk output.apk

publickey.x509.pem ——包涵证书和证书链,包括了公钥和加密算法;

publickey.x509.pem ——包括证书和证书链,包涵了公钥和加密算法;

privatekey.pk8 —— 私钥

privatekey.pk8 —— 私钥

apk中签名文件:

apk中签名文件:

MANIFEST.MF —— 包括了input.jar全数文件内容的摘要值

MANIFEST.MF —— 包涵了input.jar全体文件内容的摘要值

CE奇骏T.SF —— 保存MANIFEST.MF
的摘要值以及MANIFEST.MF中每三个摘重要项指标SHA1并base64后记录。

CE帕杰罗T.SF —— 保存MANIFEST.MF
的摘要值以及MANIFEST.MF中每2个摘要项的SHA1并base64后记录。

CE奥德赛T.CRUISERSA —— 保存了签订契约和公钥证书。签名用到的摘要消息就是CECR-VT.SF内容。

CE奇骏T.途胜SA —— 保存了签字和公钥证书。签名用到的摘要音讯正是CE汉兰达T.SF内容。

末尾保存在CEQashqaiT.RubiconSA中的是CE福特ExplorerT.SF的数字签名,签名使用privateKey生成,签名算法会在publicKey中定义,同时会把publicKey保存在CE奥迪Q5T.奥迪Q5SA中,即CE帕JeroT.汉兰达SA蕴含了签字和签字用到的证件,且证书要求是自签订契约的。

末了保存在CE奥迪Q5T.奥迪Q3SA中的是CEQX56T.SF的数字签名,签名使用privateKey生成,签名算法会在publicKey中定义,同时会把publicKey保存在CEPAJEROT.RubiconSA中,即CEXC60T.EnclaveSA包涵了署名和签字用到的证件,且证书供给是自签署的。

 

 

五 、系统默许debug.keystore

伍 、系统暗许debug.keystore

(1)暗许debug.keystore信息如下:

(1)暗中认可debug.keystore音讯如下:

Keystore name: “debug.keystore”

Keystore name: “debug.keystore”

Keystore password: “android”

Keystore password: “android”

Key alias: “androiddebugkey”

Key alias: “androiddebugkey”

Key password: “android”

Key password: “android”

CN: “CN=Android Debug,O=Android,C=US”

CN: “CN=Android Debug,O=Android,C=US”

(2)使用自带debug.keystore重新签名APK文件。

(2)使用自带debug.keystore重新签名APK文件。

jarsigner  -digestalg SHA1 -sigalg MD5withRSA -keystore debug.keystore
-storepass android -keypass android xxx.apk androiddebugkey

jarsigner  -digestalg SHA1 -sigalg MD5withRSA -keystore debug.keystore
-storepass android -keypass android xxx.apk androiddebugkey

JDK 1.7,须要丰裕:-digestalg SHA1 -sigalg
MD5withRAV4SA

JDK 1.7,需求丰硕:-digestalg SHA1 -sigalg
MD5with奥迪Q3SA

 

 

⑥ 、查看签名新闻

⑥ 、查看签名消息

查看keystore信息:keytool -list -keystore xxx.keystore -alias xxx -v

查看keystore信息:keytool -list -keystore xxx.keystore -alias xxx -v

翻开keystore公钥证书音信: keytool -list -keystore xxx.keystore -alias
xxx -rfc

葡萄娱乐官方,查看keystore公钥证书新闻: keytool -list -keystore xxx.keystore -alias
xxx -rfc

翻看apk签名新闻:jarsigner -verify -verbose -certs xxx.apk

查看apk签名音信:jarsigner -verify -verbose -certs xxx.apk