Android签名机制

来源:互联网 发布:游戏美工需要会什么啊 编辑:程序博客网 时间:2024/06/06 05:11

1.android为什么签名?

因为android程序不会安装一个没有签名的程序,而android程序需要一个证书进行数字签名。平时不用证书签名的时候,是以debug形式进行编译的,用默认的密钥和证书进行签名的。而以发布形式进行编译时就需要一个证书和私钥进行手动签名,不会以默认的密钥和证书进行签名了。

2.android签名的好处:

1.应用程序升级:如果你希望应用无缝升级到新版本,那么你必须用同一个证书和私钥进行签名。否则无法进行升级安装新程序。如果想采用不同的签名,那么系统就会要求你用不同的包名。如果想升级,则反之,既需要 相同的签名,又需要相同的包名。

2.应用程序模块化:android系统允许同一个签名的不同应用在同一个进程里运行。系统实际上是把他们当成一个个独立程序,此时我们就可以进行把他们以模块形式部署。而用户可以独立的升级其中一个模块。

3.代码或者数据共享:android提供了签名的权限机制,那么一个应用程序可以为另一个相同签名的应用程序公开自己的功能。以同一个证书对不同应用程序之间进行签名,利用签名的权限检查,你就可以以安全的形式进行代码和数据的共享了。不同应用程序之间,想共享数据,或者共享代码,可以让他们在同一个进程中,用相同的签名文件签名。

3.签名的机制原理:

1.基本知识:Message digest(消息摘要)简称摘要,请看英文翻译,是摘要,不是签名。网上大多数的apk签名的文章都混淆了这两个概念。消息摘要的主要过程就是在一个消息数据上,执行一个单向的hash函数,生成一个固定长度的hash值,这个hash值既可称为消息摘要也可称为数字指纹.

2.如果消息产生变化,那么摘要一定变化(实际上,由于长明文生成短摘要的Hash值必然产生碰撞),所以这句话不准确,应该改为:很难找到一种模式,修改了消息,而摘要不发生变化(抗性冲突)。

消息摘要的这种特性,很适合来验证数据的完整性,比如在网络传输过程中下载一个大文件BigFile,我们会同时从网络下载BigFile和BigFile.md5,BigFile.md5保存BigFile的摘要,我们在本地生成BigFile的消息摘要,和BigFile.md5比较,如果内容相同,则表示下载过程正确。
注意,消息摘要只能保证消息的完整性,并不能保证消息的不可篡改性。

签名有规则,签名的过程就是一个把规则写到程序里面的,其中会把公钥,私钥,信息摘要,写进去。


原文:http://blog.csdn.net/feiyangxiaomi/article/details/40298155



0 0
原创粉丝点击