【转】 Pro Android学习笔记(八三):了解Package(2):包签名过程
文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处:http://blog.csdn.net/flowingflying/
在Windows等操作系统中安装应用并不需要授权,为何Android需要?在设备安装的包都有一个唯一的包名,如果你试图安装一个已有包名的应用,是不会允许的,除非将之前的包删除。为了允许包升级,你必须确保是相同应用发布者,这需要数字签名。
类比例子
葡萄酒收集家发现每一种葡萄酒都有独一无二的色泽,如果色泽相同,必定来自同一葡萄酒生产厂家,无法仿造。色泽可以作为葡萄酒厂家的标识。这个例子和应用签名的唯一差别在于,色泽可没写着厂家名和地址,没有透露葡萄酒厂家信息,而我们前面学习的签名过程中,也相关信息的输入。
我们出国打开收音机,听到不同歌手唱歌,我们知道他们每个不同,但不知道他们的名字,这是歌手通过声音的自我签名。如果一个朋友告诉你某个你听到声音的歌手情况,这就类似于第三方签名。歌手可以模拟其他人来混淆,但是数字签名由算法保证不会被冒用。
当我们谈及某人签了一个JAR文件,这属于self-signed JAR文件,这些JAR文件都有独特的“颜色”与其他的JAR文件区分,但没有没有多余源开发者或公司进行鉴权。在之前的学习的签名,就属于自我签名,自己写上名字和公司,如果乐意,可以写成CIA,是否正确没有得到权威机构所认可。如果由第三方权威机构给出“红颜色”来自公司A,当我们看到“红颜色”,就知道来源公司A,这就是第三方签发的JAR文件。
数字签名
数字签名采用公/私钥加密,这是非对称加密算法,通过私钥进行加密,只能通过公钥进行解密。尽管大家都知道公钥,但因为不知道私钥,无法伪造能通过公钥进行解密的数据。
签名也称为公钥基础建设(public key infrastructure,PKI)证书,使用KPI证书签发JAR,DLL或者应用。每一个包名只能有一个PKI证书,一个PKI证书可去签支持多个包。通过之前的学习keytool和jarsinger命令,通过密码(keypass)来保护私钥。我觉得这有有个漏洞,公私钥算法假定很安全,如果破解的保护私钥的密码,就可以拿这证书去进行签名。这变成如何保护这个密码的问题,无孔不入的NSA是否已经可以破译这个保护密码。
相关链接: 我的Android开发相关文章
【转】 Pro Android学习笔记(八三):了解Package(2):包签名过程的更多相关文章
- 【转】Pro Android学习笔记(三十):Menu(1):了解Menu
目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...
- 【转】Pro Android学习笔记(三):了解Android资源(上)
在Android开发中,资源包括文件或者值,它们和执行应用捆绑,无需在源代码中写死,因此我们可以改变或替换他们,而无需对应用重新编译. 了解资源构成 参考阅读Android学习笔记(三八):资源res ...
- 【转】 Pro Android学习笔记(三二):Menu(3):Context菜单
目录(?)[-] 什么是Context menu 注册View带有Context menu 填Context菜单内容 Context菜单点击触发 什么是Context menu 在桌面电脑,我们都很熟 ...
- 【转】 Pro Android学习笔记(三三):Menu(4):Alternative菜单
目录(?)[-] 什么是Alternative menu替代菜单 小例子说明 Alternative menu代码 关于Category和规范代码写法 关于flags 多个匹配的itemId等参数 什 ...
- 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...
- Pro Android学习笔记 ActionBar(1):Home图标区
Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...
- 【转】 Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask
目录(?)[-] 5秒超时异常 AsyncTask 实现AsyncTask抽象类 对AsyncTask的调用 在哪里运行 其他重要method 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注 ...
- 【转】 Pro Android学习笔记(五六):配置变化
目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...
- 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView
目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...
- Pro Android学习笔记(一三七):Home Screen Widgets(3):配置Activity
文章转载仅仅能用于非商业性质,且不能带有虚拟货币.积分.注冊等附加条件.转载须注明出处http://blog.csdn.net/flowingflying/以及作者@恺风Wei. 通过widget定义 ...
随机推荐
- JAVA 使用qq邮箱发送邮件
引入一个架包: gradle( "com.sun.mail:javax.mail:1.5.6", ) 代码如下: private static final String QQ_EM ...
- vim 乱码问题的方法参考
linux 中设置当前用户的系统默认编码为 UTF-8 格式解决 vim 乱码问题的方法参考 任侠 2013-05-02 11:58 电脑基础 抢沙发 13,732 views 在使用 l ...
- pandas 读取excel的指定列
不管对于read_csv还是read_excel,现在都有: usecols : int or list, default None If None then parse all columns, I ...
- java读取Oracle的BFile文件
/** * * @author Jasmine */public class GetBlob{ public static void main(String[] args) { Connection ...
- python快速学习-常用內建模块
- 开启 cmd cmder 代理
win10安装了ShadowSocks软件,浏览器通过代理后就可以***,但有时候需要通过cmd科学下载安装一些组件,就需要设置一下cmd的代理 cmd如果要设置代理的话,需要在执行其他命令之前,先执 ...
- CentOS 6和CentOS 7命令区别
From http://www.cnblogs.com/bethal/p/5945026.html (1)桌面系统[CentOS6] GNOME 2.x[CentOS7] GNOME 3.x(G ...
- 《RocketMQ 安装和使用》
安装Maven 安装步骤:<Maven的安装.配置及使用入门> http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.htm ...
- 机器学习(二)—支持向量机SVM
1.SVM的原理是什么? SVM是一种二类分类模型.它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器.(间隔最大是它有别于感知机) 试图寻找一个超平面来对样本分割,把样本中的正例和反例 ...
- Python中的Unicode编码和UTF-8编码
下午看廖雪峰的Python2.7教程,看到 字符串和编码 一节,有一点感受,结合崔庆才的Python博客 ,把这种感受记录下来: ASCII码:是用一个字节(8bit, 0-255)中的127个字母表 ...