本站业务范围:1、PC端软件开发、网站开发 2、移动端APP、网站、微信接口、微商城开发 3、视频教程、毕业设计辅导
 当前位置:文章中心 >> Android_IOS_移动互联网
立即购买视频教程 安卓apk签名常见命令
夜鹰教程网 来源:www.yyjcw.com 日期:2018/1/4 13:13:31
安卓apk签名常见命令

这篇文章不能解决你的问题?我们还有相关视频教程哦!

QQ:1416759661 新手QQ群:7835003  加Q远程协助!

在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术咨询: 购买教程  技术咨询:购买教程  大胆的加QQ咨询。

一、概念篇


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


复制链接 网友评论 收藏本文 关闭此页
上一条: iOS 关于退出键盘两种方法和避免遮…  下一条: 把activity当成dialog使用
购买夜鹰教程网视频教程
  推荐教程/优惠活动

  热门服务/教程目录

  夜鹰教程网  新手必看,详细又全面。
  夜鹰教程网  购买教程  夜鹰教程网  在线支付-方便
  夜鹰教程网  担保交易-快捷安全   夜鹰教程网  闪电发货
  夜鹰教程网  电话和QQ随时可以联系我们。
  夜鹰教程网 不会的功能都可以找我们,按工作量收费。

客服电话:153 9760 0032

购买教程QQ:1416759661  购买教程
  热点推荐
在Struts 2中使用JSON Ajax支持
解决JSP中使用request乱码问题
JSP+JavaScript打造二级级联下拉菜…
Tomcat中文手册(1)
JSP及Servlet中遇到的多线程同步
详解:JSP和Servlet中的绝对路径和…
JSP Struts之HTML标签库详解
自定义JSP标签
JSP中的include指令
errorPage设置方法--JSP
JSP 国际化-格式化货币和日期
九个隐含对象使用总结JSP的
Tomcat中文手册(2)
tomcat6关于EL表达式的一个错误
jsp分页技术代码
  尊贵服务
夜鹰教程网 承接业务:软件开发 网站开发 网页设计 .Net+C#+VS2008+MSsql+Jquery+ExtJs全套高清完整版视频教程
  最近更新
iOS 关于退出键盘两种方法和避免遮…
安卓apk签名常见命令
把activity当成dialog使用
如何选择APP开发框架
Layout _width ,Layout_height和…
Android调用百度地图使用时出现in…
安卓刷机术语
android端实现断点续传功能
利用TCP/IP实现Android客户端与服…
Invalid project description ove…
推荐使用的meta标签
手机网站用Bootstrap还是jQuery M…
如何让手机访问PC网站自动跳转到手…
提升HTML5的性能体验系列之一 避免…
Android和IOS 字体该做多大合适?…
  工具下载  需要远程协助? 购买教程

sql2008视频教程 c#视频教程

VIP服务:如果您的某个功能不会做,可以加我们QQ,给你做DEMO!

JQUERY  Asp.net教程

MVC视频教程  vs2012
.NET+sql开发
手机:15397600032 C#视频教程下载
vs2012 vs2008 vs2010 sql2008 sql2005
Asp.Net  

教程咨询QQ:1416759661


这篇文章不能解决你的问题?我们还有相关视频教程哦!

QQ:1416759661 新手QQ群:7835003  加Q远程协助!

在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术咨询: 购买教程  技术咨询:购买教程  大胆的加QQ咨询。

出售asp.net系列视频教程 高清原创版 每天晚上20:30--23:00在线 按照编号从简单到高级 http://www.yyjcw.com/list.html