APK签名 v1、 v2、v3、v3.1、v4 解析

news2024/11/25 9:46:49

在 Android 应用签名中,V1 V2 V3 V4签名是不同的签名方案,具体描述如下:

V1 签名(JAR 签名):早期 Android 应用签名的基本形式,基于 Java 签名(JAR 签名)规范。它将应用的整个 APK 文件作为一个整体进行签名,包括应用的所有内容(包括清单文件、资源文件和代码文件等)。V1 签名使用了基于 MD5 和 SHA1 的哈希算法,以及 RSA 或 DSA 加密算法。


V2 签名(APK 签名方案 v2+):Android 7.0(API 级别 24)及更高版本引入的新签名方案。它采用了一种增量签名的方法,只对 APK 内容的部分进行签名,而不是整个 APK 文件。这种增量签名可以提供更好的签名效率和验证性能,并且不会破坏 APK 的完整性。V2 签名使用了基于 SHA256 的哈希算法,并采用 ECDSA(椭圆曲线数字签名算法)进行签名。它还提供了对 APK 文件进行验证和完整性检查的机制,以确保 APK 在传输和安装过程中没有被篡改。V2 签名是对 V1 签名的增强,而不是互斥的。在支持 V2 签名的设备上,应用将同时包含 V1 和 V2 两种签名方案,以保证在各种设备上的兼容性和验证方式。V2 签名是在 V1 签名基础上引入的增强方案,提供了更好的效率和安全性。

V3 签名(APK 签名方案 v3+): Android 9.0(API 级别 28)及更高版本引入的新签名方案。它是对 V2 签名的进一步增强。V3 签名采用了更强大的签名算法(基于 RSA 或 ECDSA)和更长的密钥长度,以提供更高的安全性。V3 签名与 V2 签名类似,仍然采用增量签名的方式,只对 APK 内容的部分进行签名。V3 签名在验证和完整性检查方面与 V2 签名相似,但它还提供了一些额外的安全特性,例如签名块的完整性保护和签名的附加时间戳。需要注意的是,V3 签名是可选的,应用可以同时包含 V1、V2 和 V3 三种签名方案。V3 签名的引入进一步提升了应用的安全性和验证机制,同时确保了对旧版 Android 设备的兼容性。开发者可以选择在构建应用时使用 V3 签名来提高应用的安全性水平。

V3.1 签名(APK 签名方案 v3+): Android 13 支持 APK 签名方案 v3.1,即现有 APK 签名方案 v3 的改进版本。v3.1 方案解决了 APK 签名方案 v3 在轮替方面的一些已知问题。具体而言,v3.1 签名方案支持 SDK 版本定位功能,这会允许轮替定位到平台的更高版本。

v3.1 签名方案使用在 Android 12 或更低版本中无法识别的分块 ID。因此,平台会应用以下 signer 行为:

  • 搭载 Android 13 或更高版本的设备使用 v3.1 分块中的轮替 signer。
  • 搭载旧版 Android 的设备会忽略轮替 signer,而使用 v3 分块中的原始 signer。

尚未轮替其签名密钥的应用无需执行任何其他操作。每当这些应用选择轮替时,系统都会默认应用 v3.1 签名方案。


V4 签名(APK 签名方案 v4+): Android 11.0 引入,用来支持 ADB 增量 APK 安装。v4 签名基于根据 APK 的所有字节计算得出的 Merkle 哈希树。它完全遵循 fs-verity 哈希树的结构(例如,对salt进行零填充,以及对最后一个分块进行零填充。)Android 11 将签名存储在单独的 [apk name].apk.idsig 文件中。v4 签名需要 v2 或 v3 签名作为补充。运行 adb install --incremental 命令时,adb 会要求 .apk.idsig 文件存在于 .apk 旁边。默认情况下,它还会使用 .idsig 文件尝试进行增量安装;如果此文件缺失或无效,该命令会回退到常规安装。
 

Android 7.0 及更高版本中,可以根据 APK 签名方案 v2+ 或 JAR 签名(v1 方案)验证 APK。更低版本的平台会忽略 v2 签名,仅验证 v1 签名。

Android 9 及更高版本中,可以根据 APK 签名方案 v3、v2 或 v1 验证 APK。较旧的平台会忽略 v3 签名而尝试验证 v2 签名,然后尝试验证 v1 签名。

APK v4同样是为了新功能而出现的,这个新功能就是ADB 增量 APK 安装,可以参考Android11 功能和 API 概览:https://developer.android.google.cn/about/versions/11/features

运行 adb install --incremental 命令时,adb 会要求 .apk.idsig 文件存在于 .apk 旁边(所以APK v4的签名文件.apk.idsig并不会打包进apk文件中)

默认情况下,它还会使用 .idsig 文件尝试进行增量安装;如果此文件缺失或无效,该命令会回退到常规安装。

APK v4是面向ADB即开发调试的,而如果我们没有运行比较大的apk(2GB以上)的情况,可以不用考虑Apk v4的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1431412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

红日靶场1搭建渗透

环境搭建 下载好镜像文件并解压,启动vmware 这里我用自己的win7 sp1虚拟机作为攻击机,设置为双网卡NAT,vm2 其中用ipconfig查看攻击机ip地址 设置win7 x64为双网卡,vm1,vm2 设置win08单网卡vm1,win2k3为单…

基于微信小程序的家庭个人理财产品投资系统

家庭理财管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则&#xf…

Docker Dockerfile

1、概念介绍 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。 每条保留字指令都必须为大写字母且后面要跟随至少一个参数 指令按照从上到下,顺序执行 #表示注释 每条指令都会创建一个新的镜像层并对镜像进…

机器学习周记(第二十八周:文献阅读-GSTPro)2024.1.29~2024.2.4

目录 摘要 ABSTRACT 1 论文信息 1.1 论文标题 1.2 论文摘要 1.3 论文背景 2 论文模型 2.1 问题描述 2.2 总体架构 2.3 动态图神经控制微分方程(Dynamic Graph Neural Controlled Differential Equations) 2.3.1 空间处理(Spatial…

2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024)

2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024) 会议简介 2024年清洁能源、环境与智慧城市国际研讨会(ISCEESC2024)将在中国丽江举行。本次会议主要围绕清洁能源、环境和智慧城市等研究领域,旨在为该研究领域的专家学者提供一个国际…

怎么提取视频中的音频?多个方法告诉你(全)

在视频处理的日常中,我们经常会遇到想要单独保存或编辑视频中音频的情况。无论是为了制作音频片段、配乐,还是为了保存视频中的有趣对白,提取视频中的音频是一项实用的技能。怎么提取视频中的音频?本文将向您介绍多个简单而有效的…

放假“疯狂”玩电脑的护眼操作

引用原文:[Lenovo] 放假“疯狂”玩电脑的护眼操作 1. 开启夜间模式 有很多同学不知道,其实Win10/Win11系统本身就自带护眼模式,只要开启护眼模式,就能有效降低屏幕对眼睛的伤害。(以下以Win10系统操作步骤为例&#xf…

再识C语言 DAY13 【递归函数(超详细)】

文章目录 前言一、函数递归什么是递归递归的两个重要条件练习一练习二 递归与迭代练习三练习四在练习三、四中出现的问题 如果您发现文章有错误请与我留言,感谢 前言 本文总结于此文章 一、函数递归 什么是递归 函数调用自身的编程技巧称为递归 (函数自…

【机器学习】全网最全模型评价指标(性能指标、YOLOv5训练结果分析、轻量化指标、混淆矩阵详解)【基础收藏】

🥑 Welcome to Aedream同学 s blog! 🥑 文章目录 模型性能指标常见指标ROC/AUCROC & PRC多分类问题——混淆矩阵 计算结果分析——以YOLO v5为例1. confusion_matrix.png(混淆矩阵)2. F1_curve:3. labels.jpg4. labels_corrrelogram.jpg5…

STM32外部中断(红外传感器与旋转编码器计数案例)

文章目录 一、介绍部分简介中断系统中断执行流程STM32中断NVIC基本结构NVIC优先级分组外部中断外部中断简介外部中断基本结构外部中断的流程AFIOEXTI框图 相关外设介绍旋转编码器介绍硬件电路对射式红外传感器 二、代码实现对射式红外传感器计次连接电路封装红外传感器与中断函…

清华系2B模型杀出,性能吊打LLaMA-13B

2 月 1 日,面壁智能与清华大学自然语言处理实验室共同开源了系列端侧语言大模型 MiniCPM,主体语言模型 MiniCPM-2B 仅有 24 亿(2.4B)的非词嵌入参数量。 在综合性榜单上与 Mistral-7B 相近,在中文、数学、代码能力表现…

怎么把物品信息图片批量生成二维码?每张图片单独生码的制作技巧

现在通过扫码来查看人员或者物品信息的方式越来越常见,在合适的位置放置对应的二维码内容,让其他人通过扫码来获取图片信息。那么如果我们将每个信息做成一张图片后,需要将图片生成二维码时,有能够批量生成二维码的方法可以快速处…

天地伟业接入视频汇聚/云存储平台EasyCVR详细步骤

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

基于深度卷积神经网络的图像配准(DeepSlice)

文章目录 一、基于DeepSlice的切片配准1.1、研究现状1.2、网络模型(DeepSlice)1.3、优化策略1.3.1、开发了一个基准数据集(GT)1.3.2、构建了阶段二的训练数据集(增强训练)1.3.3、角度集成 切割索引&#x…

[ChatGPT们】ChatGPT 如何辅助编程初探

主页:元存储的博客 全文 9000 字, 原创请勿转载。 我没有写过诗,但有人说我的代码像诗一样优雅 -- 雷军 图片来源:https://www.bilibili.com/video/BV1zL411X7oS/ 1. 引言 作为一个程序员,我们不仅要熟悉各种编程语…

ctfshow web入门 1-2 +密码签到

web1 F12源代码 web2 ctrlu cypto 签到 a}wohs.ftc{galf print(a[::-1])

使用 LoRA 在 vi​​ggo 数据集上微调 Microsoft phi-2 小语言模型

一、说明 Microsoft 的基于 Transformer 的小语言模型。它可以根据 MIT 许可在HuggingFace上使用。 它在 96 个 A100 GPU 上使用 1.4T 令牌进行了 14 天的训练。Phi-2 是一个 27 亿个参数的预训练 Transformer,不使用 RLHF 或指示微调。它进行下一个标记预测&#x…

RNN(神经网络)

目录 介绍: 数据: 模型: 预测: 介绍: RNN,全称为循环神经网络(Recurrent Neural Network),是一种深度学习模型,它主要用于处理和分析序列数据。与传统…

Python入门:生成器迭代器

一、列表生成式 现在有个需求,列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,怎么实现?你可能会想到2种方式 二逼青年版 1 2 3 4 a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] b [] for i in a:b.append(i1) print(b) …

如果通过浏览器调试?

背景:博主是一个有丰富经验的后端开发人员,在前端开发中感觉总是有种力不从心的感觉,因为没有后端debug调试的清晰感。 解决办法:掌握chorm浏览器调试技巧。 F12, F5 打上断点之后,这不就是梦寐之中的调试…