获取APK证书MD5、SHA1、SHA256等秘钥

一、先把xx.apk后缀名改成xx.zip并解压 


1.先把xx.apk后缀名改成xx.zip并解压

2.在META_INF目录下找到xxx.RSA文件

3.确保安装了jdk并且正确配置了环境变量

4.cmd中执行keytool -printcert -file xxxx.RSA目录


1.确保安装了jdk并且正确配置了环境变量。

2.cmd中执行keytool -printcert -jarfile xxx.apk

运行效果如下:

可以看出运行效果完全一样

这里主要是属性keytool命名 以及 keytool -printcert 的用法

这样在查找签名文件冲突的时候就可以查看不同的apk对应的签名文件是否一样。

三、对xxxx.keystore文件获取MD5,签名信息

假如我们想要获取xxxx.keystore的签名信息和md5值,同样可以用keytool命名

1.确保安装了jdk并且正确配置了环境变量

2.在cmd中执行 keytool -list -v -keystore xxxx.keystore -storepass 签名文件密码

运行效果如下:

或者 手动输入密码:

cmd中执行 keytool -list -v -keystore xxxx.keystore

运行效果如下:

可以看出运行效果完全一样

======================补充================

1. 通过命令行工具(需证书文件)

如果你有云证书的 .keystore 或 .jks 文件,可以使用 Java 的 keytool 或 openssl 工具提取公钥信息:

方法一:使用 keytool(JDK 自带)
# 查看证书详细信息(包含公钥指纹)
keytool -list -v -keystore your_certificate.keystore -alias your_alias

# 导出证书为 CRT 格式
keytool -exportcert -alias your_alias -keystore your_certificate.keystore -file certificate.crt

# 查看证书中的公钥内容
keytool -printcert -file certificate.crt
方法二:使用 openssl(需额外安装)
# 将 JKS 转换为 PKCS12 格式
keytool -importkeystore -srckeystore your_certificate.keystore -destkeystore temp.p12 -deststoretype PKCS12

# 从 PKCS12 中提取公钥证书
openssl pkcs12 -in temp.p12 -nokeys -out certificate.crt

# 查看公钥内容
openssl x509 -inform PEM -in certificate.crt -noout -text

2. 通过 Android Studio 获取(需 APK 文件)

如果你已经有打包好的 APK 文件,可以通过 Android Studio 提取签名信息:

  1. 将 APK 文件拖放到 Android Studio 中
  2. 右键点击 APK 文件,选择 Show in Explorer(Windows)或 Reveal in Finder(Mac)
  3. 打开终端,进入 APK 文件所在目录
  4. 使用以下命令解压 APK 并提取签名信息:
# 解压 APK
unzip your_app.apk -d temp

# 提取 CERT.RSA 文件
cd temp/META-INF

# 查看证书信息(包含公钥)
keytool -printcert -file CERT.RSA

4. 使用第三方工具

有一些第三方工具可以帮助提取证书公钥:

APK 签名查看器

在线工具

  • 如 CertUtil
  • 需先将证书导出为 .crt 格式,再上传查看

=============补充获取公钥================================================== 

 以下是针对通过不同方式获取信息时,只有sha1sha256,却没有公钥和 MD5 的解决办法:

方法一:借助 OpenSSL 工具(需提前安装配置)
  1. 确保你已经安装了 OpenSSL 工具,并且在命令行中可以直接调用(配置好环境变量 )。
  2. 在命令行中,进入到 certificate.crt 所在的目录,执行以下命令:
  3. openssl x509 -inform der -in certificate.crt -noout -text
方法二:使用 Java 代码提取(需有 Java 环境)

编写一段简单的 Java 代码来读取证书并提取公钥,示例代码如下:

import java.io.FileInputStream;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.PublicKey;

public class ExtractPublicKey {
    public static void main(String[] args) {
        try {
            // 加载证书文件
            FileInputStream fis = new FileInputStream("certificate.crt");
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            X509Certificate cert = (X509Certificate) cf.generateCertificate(fis);
            
            // 获取公钥
            PublicKey publicKey = cert.getPublicKey();
            System.out.println("公钥内容: " + publicKey);
            
            fis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 将上述代码保存为 .java 文件(比如 ExtractPublicKey.java ),然后通过 javac ExtractPublicKey.java 编译(确保已配置好 Java 开发环境 ),再执行 java ExtractPublicKey ,控制台就会输出公钥的具体信息,形式类似 Sun RSA public key, 2048 bits 以及后续的密钥参数等内容 。

这是 Java 代码编译报错,错误原因及解决:

从报错信息看,核心问题是代码文件里存在非法字符 \ufeff ,这通常是文件带 BOM 头导致的,按以下步骤解决:

1. 清理非法字符(关键)

纯文本编辑器(如 Notepad++、VS Code )打开 ExtractPublicKey.java 文件:

 
  • Notepad++:点击顶部菜单 编码 → 选 转为 UTF-8 无 BOM 编码 ,再保存文件。
  • VS Code:右下角点编码显示(如 UTF-8 )→ 选 通过编码保存 → 选 UTF-8 ,覆盖保存。

2. 重新编译

清理后,回到命令行,确保在代码文件目录下,重新执行:

javac ExtractPublicKey.java

java ExtractPublicKey

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值