手机端安装包签名原理
无论是开发Android,还是IOS 还是HarmonyOs应用,我们在项目之初,就会用对应的开发IDE生成签名。就像一个约定俗称的流程。
就比如应用开发初期的时候如果没有签名,那么您的应用打正式包无法上架,同时安装到其他的手机,也不会运行。签名虽然不是技术不是Coding,但需要我们好好了解,因为无论是Android还是IOS,发布包都需要签名。
但是我想每一位开发者在初次点击IDE中,签名功能,设置密码的时候,都会有以下疑惑,
- 为什么要签名啊,好麻烦!
- 这签名的时候,为什么还让设置用户名密码。
- 它作用于什么环节呢?
- 具体的机制是什么呢?
- 啊?签名是啥来着?-_-||
如图所示
楼主并没有在网上找到合适的答案。故自己研究了一番。
什么是签名
楼主先列出自己的总结,再讲签名
签名的本质 = 哈希值被加密生成的 这段数据 (如果不理解哈希值的原理和用途,建议先了解一下这块,否则难以理解下文的原理!)至于用什么加密手段,看使用方怎么个策略,对于移动开发的打包签名, 哈希值被加密,采用的算法是 非对称性加密,(如果不理解非对称性加密,还是建议先了解一下这块,否则流程中您可能还是不懂为什么要那么做。 )
签名可以理解为,被数字签名技术运算,在文件中附上的独一无二的那个标识。这个生成“标识”的过程比较复杂。其核心目的就是确保一个文件的独一无二。
为什么需要签名
我们想象一个场景,以支付宝为例,如果有一个非法组织搞了一个和支付宝长得一模一样的应用(当然非法组织不可能自己能拿到阿里重要数据的,自己还没有,就恶意修改内部的代码),这个应用改掉了支付中的某些逻辑,使得用户每一笔付款都打入他们的账户。这种钓鱼软件被用户下载,用户每有一笔消费便会多出一笔损失,钱不会到达商户的手中,就会造成非常大的社会损失。
对于一个应用市场而言,如果这个市场里出现这种应用,是万万不可的。签名有一个作用就是,能确保,这个应用一定是阿里巴巴集团出来的。而非钓鱼软件。
当然签名的作用不止这一个。其余作用用通俗的语言总结是
- 证明你的东西的确是你的。
- 防止你的东西邮出去途中被篡改了,导致用户收到的根本就不是原版。
其他方面还有一些原因使得我们必须要搞签名
- 法律规定App发布,必须要证明有开发者信息的(软件界的,商品标注生产商)
- 版本控制,因为签名是独一无二的,它里面也会有版本信息,有利于更新
- 平台要求,你不得不安装否则人家不让你上架。当然,其初衷也是避免我们上述的哪些情况,确保用户安装的软件渠道是正版。没有经过非法篡改的。
签名原理
这里的签名,讲的只有一种场景, 就是仅仅对于移动端开发打包签名,从上传包,到官方验证,再到用户下载到安装包的一些列校验过程。这篇文章主要解决的就是开发者对打包时签名的疑惑。
楼主将流程画成了图片
1 开发者本机打包环节涉及到的签名
用户将自己打包的APK包进行签名完之后,下一步就是将它发布给官方渠道,我们以Google Play为例。
2 官方渠道验证环节
至此如果全部流程通过,没有被打回,那么官方已经认证了,这个包中间没有被修改过。而且它就是开发者的包(出自该公司的包)。同时一些版本信息也会被记录在案。以便于之后的分发。等等。我们这里重点关注一下签名。