【转】 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定义 ...
随机推荐
- Qt+数据库
前言支持内置数据库: 一.sqlite 1.在头文件中声明数据库对象 QSqlDatabase db; 2.在构造函数中定义对象(最好这样定义,因为对于db来说只需要addDatabase一次,否则多 ...
- java中如何高效判断数组中是否包含某个特定的值
四种不同方式检查数组是否包含某个值 使用List: public static boolean useList(String[] arr, String targetValue) { return A ...
- [RK3288][Android6.0] TS-ADC驱动流程小结【转】
本文转载自:https://blog.csdn.net/kris_fei/article/details/55045936 Platform: RK3288OS: Android 6.0Kernel: ...
- RSA签名 python PHP demo 例子
python RSA+MD5签名demo: #!/usr/bin/env python2.7 #coding:utf-8 import base64 from Crypto.PublicKey imp ...
- 如何开启和禁止Linux系统的ping功能
在日常的网络维护和使用过程中,ping命令是最为常用的一个检测命令,它所使用的是ICMP协议,但是为了保护主机,很多时候我们需要禁止ICMP协议,在这种情况下,终端再使用ping命令检测,服务器是不会 ...
- java中集合类详解
集合类说明及区别 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └W ...
- OpenStack日志搜集分析之ELK
ELK 安装配置简单,用于管理 OpenStack 日志时需注意两点: Logstash 配置文件的编写 Elasticsearch 日志存储空间的容量规划 另外推荐 ELKstack 中文指南. E ...
- review35
使用Thread创建线程通常使用的方法是:Thread(Runnable target).该构造方法中的参数是一个Runnable类型的接口,因此在创建线程对象时必须向构造方法的参数传递一个实现Run ...
- 字典:dict.c/dict.h
Redis 源码分析(1):字典和哈希表(dict.c 和 dict.h)http://huangz.iteye.com/blog/1455808两个点:字典结构的运作流程哈希表的渐进式 rehash ...
- 如何做好App的测试工作
记得刚开始接触app测试时,可谓是一脸懵状,拿到一个功能不知道该测些什么,会因为测试范围确认不足.测试点考虑不全等导致线上问题,吃一堑才会长一智,栽过几次坑后就学会了如何避免.现总结App测试点如下, ...