APP备案(Android) - 获取签名证书公钥、MD5

因为近期刚针对各应用平台对APP备案时间节点要求进行了统一整理,然后隔天就被要求提供一下app相关的的公钥和MD5,虽然很快就解决了这个事情,但忍不住又稍微衍生了一下,但行小步,莫问远方吧

关联Blog

  • APP备案(Android) - 各应用平台对APP备案时间节点要求
  • APP备案(Android) - 获取签名证书公钥、MD5

Tip:如果着急获取公钥和MD5可以直接用便捷工具,反之有兴趣的话可以看看其他获取公钥和MD5的方式

    • 基础认知
      • 证书公钥(Public Key)
      • MD5(Message Digest Algorithm 5)
    • 便捷工具
      • 公钥、MD5
    • 核心方式
      • 准备工作
      • 公钥
      • MD5
    • 核心方式 - MD5异常场景处理方式
      • 环境介绍
      • signingReport(可用)
      • jadx 验证(未亲测,应可用)
      • RSA文件(亲测,未必全有效)

基础认知

证书公钥(Public Key)

  • 加密通信: 在公钥加密系统中,公钥用于加密数据,而私钥用于解密。在安全通信中,通信双方可以交换公钥,并使用对方的公钥加密数据,保证了数据的机密性。
  • 数字签名验证: 证书公钥也用于验证数字签名。数字签名是对数据的摘要,通过使用私钥对摘要进行签名,然后使用公钥来验证签名的有效性。这确保了数据的完整性和真实性。

MD5(Message Digest Algorithm 5)

需要注意的是,MD5 目前不再被认为是安全的加密算法,因为它容易受到碰撞攻击(多个不同的输入产生相同的摘要)。在安全性要求较高的情况下,应考虑使用更强大的哈希算法,例如 SHA-256 或 SHA-3。

  • 数据完整性: MD5 是一种哈希函数,用于生成数据的唯一固定长度的摘要。这个摘要通常用于验证数据的完整性。如果原始数据发生变化,其 MD5 摘要也会发生变化,因此接收方可以比较原始数据的 MD5 摘要以检测是否存在任何篡改
  • 文件校验: MD5 常用于校验文件完整性。在下载文件后,可以计算文件的 MD5 值并与提供的 MD5 值进行比较,以确保文件未被损坏或篡改
  • 密码存储: 尽管 MD5 不再被推荐用于密码存储,但在过去的一些应用中,它被用于生成密码的散列值。现代应用通常使用更安全的哈希算法,如 SHA-256。

便捷工具

近期基本所有国内Android应用平台因为工信部的要求都需要进行APP备案,在APP备案中需要提供公钥、MD5,所以很多工具app应运而生,这种工具我并不确定是否以后还一直可以使用,故除此之外我还提供了另一种核心方式,万变不离其中~

APP备案助手

在这里插入图片描述

公钥、MD5

在这里插入图片描述


核心方式

准备工作

因为我是使用Demo做演练,所以我需要先 生成 keystore、jks 签名证书,然后在 反编译keystore、jks签名证书 获取部分信息

#生成jsk格式的签名证书
keytool -genkeypair -v -keystore testkeyly.jks -keyalg RSA -keysize 2048 -validity 10000 -alias testkeyly -storetype JKS

公钥

通过 keytool 工具获取签名证书

#示例 your_alias、your_keystore 分别输入自己的签名信息 & certificate 证书名称(可自行更改)
keytool -export -alias your_alias -file certificate.cer -keystore your_keystore.keystore# demo 示例
keytool -export -alias tmpkey -file certificate.cer -keystore tmpkey.jks 

cmd操作结果

在这里插入图片描述

生成cer格式文件

在这里插入图片描述

直接在详细信息获取公钥即可

在这里插入图片描述

MD5

如果当前本地JDK环境用的1.8的话,可以直接采用如下方式,逆向获取证书信息节课,如没有MD5则查看后续的异常处理方式

逆向签名 - keystore、jks签名文件

# 示例 xxx 输入自己的签名文件名即可
keytool.exe -list -v -keystore xxx.keystore或xxx.jks#demo 示例
keytool -list -v -keystore tmpkey.jks

正常的话签名信息中可以看到MD5,如下

在这里插入图片描述

看到这里可能你也遇到不正常的场景了…

例如签名信息中根本不包含MD5信息… 而且密钥库类型也不同…

在这里插入图片描述


核心方式 - MD5异常场景处理方式

查了一下资料,发现可能高于JDK1.8的环境 移除了 这些 Disable MD5 or MD2 signed jars,导致均无法通过 keyTool获取到 MD5 信息

环境介绍

当前环境

  • 本地环境:验证了一下我本地JDK版本已经到了11.0.18
    在这里插入图片描述
  • 项目环境:JDK1.8

在这里插入图片描述

  • Tip:其实下面的方式都是曲线操作,有兴趣的可以去看一下采用 openssl 获取MD5的方式,因最近减法还没做完,我就先不去深挖了,有机会我再去浅学一下…

signingReport(可用)

执行方式 + 默认配置并未设置签名信息,故该处标红区域的MD5值不对

效果如图

在这里插入图片描述

build.gradle中声明对应的签名信息,然后重新执行该操作(可参考:debug模式下打出release签名包)

在这里插入图片描述


jadx 验证(未亲测,应可用)

早以前我就记录过 Jadx快速实现Apk反编译 ,这里就不再赘述了,图就直接套了…

APK signature

  • Modulus/模数 为公钥,十进制显示的
  • MD5 Fingerprint/MD5签名,APP备案填写时需要去掉空格,填写32位长度的十六进制数据

在这里插入图片描述


RSA文件(亲测,未必全有效)

RAS本身是一种加密方式,这里的RSA文件就是加密文件

  1. apk 后缀改为 zip,变为可压缩包
    在这里插入图片描述

  2. 解压后进入 META-INF

在这里插入图片描述

  1. 找一个.RSA后缀文件(如果没有该文件,那么这个apk签名可能存在问题)

在这里插入图片描述

4.使用 keytool命令获取MD5签名(有的可能获取不到,例如金融型app会进行特殊的二次加密)

#xxx 替换成对应的rsa文件名即可
keytool -printcert -file xxx.RSA 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我在Vscode学OpenCV 图像处理二(滤除噪声干扰)

图像处理二 滤除噪声干扰三、噪声3.1图像噪声3.2 滤波3.2.1均值滤波(1)锚点(2)中心点(下面第3小点会详细解释)(3)核的大小奇偶数的区别(1)举例奇偶的例子&…

win11 CUDA(12.3) + cuDNN(12.x) 卸载

win11 CUDA(12.3) cuDNN(12.x)卸载 信息介绍卸载 信息介绍 本文是对应 win11RTX4070Ti 安装 CUDA cuDNN(图文教程) 的卸载 卸载 控制面板 --> 程序 --> 卸载程序 卸载掉图中红框内的&#xff0c…

C++设计模式——Adapter(适配器)模式

一、Adapter模式是个啥? 适配器模式在软件开发的江湖里,可以说用途是非常广的。下面几个经典的场景来说明适配器模式的使用。 场景一 场景二 假如你正在开发一款股票市场监测程序, 它会从不同来源下载 XML 格式的股票数据, 然后…

Tomcat管理功能使用

前言 Tomcat管理功能用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。在默认情况下是处于禁用状态的。如果需要开启这个功能,需要配置管理用户,即配置tomcat-users.xml文件。 !!!注意:测试功…

Photoshop Circular Text

Ctrl N 新增 现学现卖

QT作业1

自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 头文件代码&#xff1a; #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QIcon> #include <QLabel> //标签类 #include <QMovie> //动图类 #include <…

redis-学习笔记(hash)

Redis 自身已经是 键值对 结构了 Redis 自身的键值对就是通过 哈希 的方式来组织的 把 key 这一层组织完成后, 到了 value 这一层, 还可以用 哈希类型 来组织 (简单的说就是哈希里面套哈希 [数组里面套数组 -> 二维数组] ) [ field value ] hset key field value [ field va…

深入了解Java Duration类,对时间的精细操作

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概6000多字&#xff0c;预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&#x…

【踩坑记录】from natten import NeighborhoodAttention1D

在配置forecast-mae环境的时候。 ./forecast-mae/src/model/layers/agent_embedding.py文件中 导入包的时候from natten import NeighborhoodAttention1D 报错&#xff0c; 解决办法&#xff0c;默认安装的是__version__ "0.14.2"版本的 出现这个问题可能是包损坏…

c++新经典模板与泛型编程:const修饰符的移除与增加

const修饰符的移除 让你来写移除const修饰符&#xff0c;你会怎么样来写&#xff1f; &#x1f602;&#x1f602;trait类模板&#xff0c;如下 #include <iostream>// 泛化版本 template<typename T> struct RemoveConst {using type T; };// 特化版本 template…

kafka入门(四):消费者

消费者 (Consumer ) 消费者 订阅 Kafka 中的主题 (Topic) &#xff0c;并 拉取消息。 消费者群组&#xff08; Consumer Group&#xff09; 每一个消费者都有一个对应的 消费者群组。 一个群组里的消费者订阅的是同一个主题&#xff0c;每个消费者接收主题的一部分分区的消息…

Stable Diffusion 系列教程 - 2 WebUI 参数详解

Stable Diffusion 的整个算法组合为&#xff1a; UNet VAE 文本编码器 UNet&#xff1a;就是我们大模型里的核心。 文本编码器&#xff1a;将我们的prompt进行encoder为算法能理解的内容&#xff08;可以理解为SD外包出去的项目CLIP&#xff09;。 VAE&#xff1a;对UNet生…

Java_LinkedList链表详解

目录 前言 ArrayList的缺陷 链表 链表的概念及结构 链表的种类 1.单向或双向 2.带头或不带头 3.循环或不循环 LinkedList的使用 什么是LinkedList LinkedList的使用 LinkedList的构造 LinkedList的其他常用方法介绍 LinkedList的遍历 ArrayList和LinkedList的…

el-tree数据量过大,造成浏览器卡死、崩溃

el-tree数据量过大&#xff0c;造成浏览器卡死、崩溃 场景&#xff1a;树形结构展示&#xff0c;数据超级多&#xff0c;超过万条&#xff0c;每次打开都会崩溃 我这里采用的是引入新的插件虚拟树&#xff0c;它是参照element-plus 中TreeV2改造vue2.x版本虚拟化树形控件&…

golang开发之个微机器人的二次开发

简要描述&#xff1a; 下载消息中的文件 请求URL&#xff1a; http://域名地址/getMsgFile 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型…

【Unity】Addressable包资源加载失败:CRC Mismatch.

Error while downloading Asset Bundle: CRC Mismatch. 是资源下载校验失败&#xff0c;但是资源和上次打包的资源是一样的。没有排查到原因&#xff0c;在谷歌搜索后看到 大概就是指Unity版本修改后打包&#xff0c;会破坏原来的CRC信息&#xff0c;导致导报出来的资源无法通…

Module build failed : Error : Vue packages version mismatch:

Vue packages version mismatch: - vue2.7.15 (E:\Workspace_ce\erp\erp-web\node_modules\vue\dist\vue.runtime.common.js) - vue-template-compiler2.6.11 (E:\Workspace_ce\erp\erp-web\node_modules\vue-template-compiler\package.json) 【问题解决了&#xff0c;我很不…

Mac电脑投屏AirServer 2024怎么下载安装激活许可期限

对于那些想要将 iPhone、iPad 或其他 iOS 设备上的小屏幕镜像到计算机上的大屏幕的人来说&#xff0c;AirPlay 是一个很好的工具。 基于此&#xff0c;AirServer 非常需要将您的 Mac 或 PC 变成 AirPlay 设备。 但是如何使用计算机上的设置对 iPhone 等 iOS 设备进行屏幕镜像&a…

【AIGC】Midjourney高级进阶版

Midjourney 真是越玩越上头&#xff0c;真是给它的想象力跪了~ 研究了官方API&#xff0c;出一个进阶版教程 命令 旨在介绍Midjourney在Discord频道中的文本框中支持的指令。 1&#xff09;shorten 简化Prompt 该指令可以将输入的Prompt为模型可以理解的语言。模型理解语言…

【C++ 程序设计入门基础】- 第3节-循环结构02

目录 while 语句 案例 while 循环 输入一个整数 n &#xff0c;输出 1~n 的所有整数。 查看运行结果&#xff1a; while 语句结构解析 do while 语句 案例 do while 循环 输入一个整数n&#xff0c;输出1&#xff5e;n的所有整数。 查看运行结果 while、do while的区别 …