设为首页 收藏本站 662p开源网
开启辅助访问 切换到宽版

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

切换风格 立即注册 找回密码

安卓教程网

发表于 2018-1-5 14:06:16 | 显示全部楼层 |阅读模式
更多
一、概念篇
1、消息摘要-Message Digest
消息摘要:在消息数据上,执行一个单向的hash函数,生成一个固定长度的hash值,这个Hash值就是消息摘要,也成为数字指纹。
消息摘要特点:
(1)无论输入消息多长,计算出来的消息摘要长度总是固定的;
(2)不可逆性,通过摘要无法推算出消息本身;
(3)如果修改了消息,摘要会发生变化(长明文生成短摘要的Hash必然会碰撞);
作用:只能保证消息的完整性,无法保证消息的防篡改。使用场景:文件下载的MD5校验。
消息摘要算法:MD5、SHA-0、SHA-1

2、数字签名-Signature
数字签名:消息发送者用自己的私钥对消息摘要加密产生的一个字符串,加密算法确保别人无法伪造生成这段字符串。这段数字字符串也是对消息发送者发生消息真实性的一个有效证明,故称数字签名。
数字签名是非对称机密算法+数字摘要技术的结合。
作用:保证消息完整性、也可以防篡改。
数字签名原理:消息发送者将信息摘要用私钥加密,与原文一起传送给接收者。消息接收者用公钥才能将信息摘要解密,再使用相同的Hash函数对收到原文计算产生一个信息摘要,对比二者是否一致。基于非对称加密算法的数字签名保证防篡改,消息摘要保证完整性。
思考:为什么只对消息摘要进行数字签名?
加密算法普遍存在计算耗时较长的瓶颈,MD5、SHA等消息摘要算法则不存在该问题,只针对消息摘要进行签名,可以大大减少加密内容,提升整个数字签名过程的效率。

3、数字证书-Certificate
数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公钥的文件。
数字证书包含内容:
证书发布机构 Issuer
证书有效期Validity
消息发送方的公钥
证书所有者 Subject
数字签名使用的算法
备注:android APK中的CERT.RSA是自签名的,并不需要第三方权威机构发布或者认证,用户可以在本地机器生成这个自签名证书。

二、Android APK两种签名方式
1、jarsign和apksign工具
jarsign —— 是java本身自带的一个工具,可以对jar进行签名。
signapk —— 是专门为Android应用程序apk进行签名的工具。
二者的签名算法没有什么区别,主要是签名时使用的文件不一致。

2、keystore和pk8、x509.pem的区别
jarsian 工具签名时使用的是keystore文件。Eclipse的Debug包默认使用jarsign工具签名。
apksign 工具签名时使用的pk8、x509.pem文件

3、Android中是允许使用多个keystore对apk进行签名的。
jarsign签名文件:文件后缀名是签名算法,文件名是keystone别名。
apksign签名之后的apk中的META-INF写死了是CERT的名字。

4、apksign签名
eg: apksign publickey.x509.pem privatekey.pk8 input.apk output.apk
publickey.x509.pem ——包含证书和证书链,包含了公钥和加密算法;
privatekey.pk8 —— 私钥
apk中签名文件:
MANIFEST.MF —— 包含了input.jar所有文件内容的摘要值
CERT.SF —— 保存MANIFEST.MF 的摘要值以及MANIFEST.MF中每一个摘要项的SHA1并base64后记录。
CERT.RSA —— 保存了签名和公钥证书。签名用到的摘要信息就是CERT.SF内容。
最终保存在CERT.RSA中的是CERT.SF的数字签名,签名使用privateKey生成,签名算法会在publicKey中定义,同时会把publicKey保存在CERT.RSA中,即CERT.RSA包含了签名和签名用到的证书,且证书要求是自签名的。

5、系统默认debug.keystore
(1)默认debug.keystore信息如下:
Keystore name: “debug.keystore”
Keystore password: “android”
Key alias: “androiddebugkey”
Key password: “android”
CN: “CN=Android Debug,O=Android,C=US”
(2)使用自带debug.keystore重新签名APK文件。
jarsigner  -digestalg SHA1 -sigalg MD5withRSA -keystore debug.keystore -storepass android -keypass android xxx.apk androiddebugkey
JDK 1.7,需要加上:-digestalg SHA1 -sigalg MD5withRSA

6、查看签名信息
查看keystore信息:keytool -list -keystore xxx.keystore -alias xxx -v
查看keystore公钥证书信息: keytool -list -keystore xxx.keystore -alias xxx -rfc
查看apk签名信息:jarsigner -verify -verbose -certs xxx.apk

发表于 2018-1-5 14:08:11 | 显示全部楼层
是爷们的娘们的都帮顶!大力支持
发表于 2018-2-6 01:32:45 | 显示全部楼层
楼猪V5啊

新浪微博达人勋

注册会员

92

积分

30

威望

1

金钱

Rank: 2

积分
92
发表于 2018-2-6 03:09:06 | 显示全部楼层
为毛老子总也抢不到沙发?!!

新浪微博达人勋

注册会员

144

积分

42

威望

7

金钱

Rank: 2

积分
144
发表于 2018-2-11 05:38:03 | 显示全部楼层
看看吧
发表于 2018-2-14 22:04:40 | 显示全部楼层
锄禾日当午,发帖真辛苦。谁知坛中餐,帖帖皆辛苦!

新浪微博达人勋

注册会员

123

积分

38

威望

2

金钱

Rank: 2

积分
123
发表于 2018-3-7 19:31:12 | 显示全部楼层
支持安卓网的发展,哈哈

新浪微博达人勋

注册会员

99

积分

33

威望

0

金钱

Rank: 2

积分
99
发表于 2018-3-8 00:15:23 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊

新浪微博达人勋

注册会员

55

积分

17

威望

2

金钱

Rank: 2

积分
55
发表于 2018-3-10 07:40:53 | 显示全部楼层
非常好,顶一下

新浪微博达人勋

注册会员

101

积分

33

威望

1

金钱

Rank: 2

积分
101
发表于 2018-3-17 01:32:22 | 显示全部楼层
介是神马?!!
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Archiver|手机版|小黑屋|安卓教程网 ( 粤ICP备12089784号  

GMT+8, 2018-12-16 09:55 , Processed in 1.025975 second(s), 54 queries .

Powered by Discuz X3.1

© 2001-2013 IOS教程网

快速回复 返回顶部 返回列表