当前位置: 首页 > article >正文

手机端安装包签名原理

无论是开发Android,还是IOS 还是HarmonyOs应用,我们在项目之初,就会用对应的开发IDE生成签名。就像一个约定俗称的流程。

就比如应用开发初期的时候如果没有签名,那么您的应用打正式包无法上架,同时安装到其他的手机,也不会运行。签名虽然不是技术不是Coding,但需要我们好好了解,因为无论是Android还是IOS,发布包都需要签名。

但是我想每一位开发者在初次点击IDE中,签名功能,设置密码的时候,都会有以下疑惑,

  • 为什么要签名啊,好麻烦!
  • 这签名的时候,为什么还让设置用户名密码。
  • 它作用于什么环节呢?
  • 具体的机制是什么呢?
  • 啊?签名是啥来着?-_-||

如图所示

楼主并没有在网上找到合适的答案。故自己研究了一番。

什么是签名

楼主先列出自己的总结,再讲签名

签名的本质 = 哈希值被加密生成的 这段数据 (如果不理解哈希值的原理和用途,建议先了解一下这块,否则难以理解下文的原理!)至于用什么加密手段,看使用方怎么个策略,对于移动开发的打包签名, 哈希值被加密,采用的算法是 非对称性加密,(如果不理解非对称性加密,还是建议先了解一下这块,否则流程中您可能还是不懂为什么要那么做。 )

签名可以理解为,被数字签名技术运算,在文件中附上的独一无二的那个标识。这个生成“标识”的过程比较复杂。其核心目的就是确保一个文件的独一无二。

为什么需要签名

我们想象一个场景,以支付宝为例,如果有一个非法组织搞了一个和支付宝长得一模一样的应用(当然非法组织不可能自己能拿到阿里重要数据的,自己还没有,就恶意修改内部的代码),这个应用改掉了支付中的某些逻辑,使得用户每一笔付款都打入他们的账户。这种钓鱼软件被用户下载,用户每有一笔消费便会多出一笔损失,钱不会到达商户的手中,就会造成非常大的社会损失。

对于一个应用市场而言,如果这个市场里出现这种应用,是万万不可的。签名有一个作用就是,能确保,这个应用一定是阿里巴巴集团出来的。而非钓鱼软件。

当然签名的作用不止这一个。其余作用用通俗的语言总结是

  • 证明你的东西的确是你的。
  • 防止你的东西邮出去途中被篡改了,导致用户收到的根本就不是原版。

其他方面还有一些原因使得我们必须要搞签名

  • 法律规定App发布,必须要证明有开发者信息的(软件界的,商品标注生产商)
  • 版本控制,因为签名是独一无二的,它里面也会有版本信息,有利于更新
  • 平台要求,你不得不安装否则人家不让你上架。当然,其初衷也是避免我们上述的哪些情况,确保用户安装的软件渠道是正版。没有经过非法篡改的。

签名原理

这里的签名,讲的只有一种场景, 就是仅仅对于移动端开发打包签名,从上传包,到官方验证,再到用户下载到安装包的一些列校验过程。这篇文章主要解决的就是开发者对打包时签名的疑惑。

楼主将流程画成了图片

1 开发者本机打包环节涉及到的签名

用户将自己打包的APK包进行签名完之后,下一步就是将它发布给官方渠道,我们以Google Play为例。

2 官方渠道验证环节

至此如果全部流程通过,没有被打回,那么官方已经认证了,这个包中间没有被修改过。而且它就是开发者的包(出自该公司的包)。同时一些版本信息也会被记录在案。以便于之后的分发。等等。我们这里重点关注一下签名。

3 官方渠道再签名(非必须,但我都好奇了,于是乎又研究了一下)

4 用户下载安装包涉及到的签名验证过程


http://www.kler.cn/a/582608.html

相关文章:

  • C++中数组作为函数参数传递,和使用指针作为函数参数有什么区别?
  • Webpack 打包详细教程
  • 推理模型对SQL理解能力的评测:DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet
  • ELK traceId实现跨服务日志追踪
  • 传球游戏(蓝桥云课)
  • 附下载 | 2024 OWASP Top 10 基础设施安全风险.pdf
  • 【Godot4.0】EasyClock时钟组件
  • upload-labs-master通关攻略(9~12)
  • CentOS 7.9安装OpenStack
  • Python和Docker实现AWS ECR/ECS上全自动容器化部署网站前端
  • Sass (Scss) 与 Less 的区别与选择
  • RAGFlow版本升级-Win10系统Docker
  • 淘晶驰 屏幕 应用 之 esp8266/arduino 简约时钟 2025/3/12
  • Python:函数式编程
  • 图神经网络学习笔记—纯 PyTorch 中的多 GPU 训练(专题十二)
  • 095:vue+cesium 使用Cesium3DTileset加载3D瓦片数据
  • 使用netlify部署github的vue/react项目或本地的dist,国内也可以正常访问
  • Deepseek -> 如何在PyTorch中合并张量
  • K8S学习之基础二十五:k8s存储类之storageclass
  • Java 集合框架:数据管理的强大工具