签名的获取

本文介绍了如何通过解压APK获取CERT.RSA文件来得到签名信息,使用keytool命令行工具处理jks或keystore文件查看签名,以及在AndroidActivity中使用ApplySigningUtils工具类获取应用签名。此外,还提到了通过微信等第三方平台的签名工具进行签名查询的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

若是apk

使用解压工具解压 APK 文件,在 META-INF 文件夹拿到 CERT.RSA 文件。
假设 CERT.RSA 文件的路径是 D:\GetOn\ceshi\release\CERT.RSA
在 CMD 中输入

keytool -printcert -file D:\GetOn\ceshi\release\CERT.RSA
就可以得到签名信息了,MD5值

若是签名文件

jks文件

jks 作为签名文件,也可以通过命令行来查看的其中的签名信息,假设签名文件的位置是D:\GetOn\ceshi\release\test_release.jks
在终端中输入

keytool -list -v -keystore D:\GetOn\ceshi\release\test_release.jks

keystore文件

还可以根据代码获取

public class ApplySigningUtils {
    /**
     * 获取应用签名
     *
     * @param context
     * @param packageName
     * @return
     */
    public static String getRawSignatureStr(Context context, String packageName) {
        try {
            Signature[] signs = getRawSignature(context, packageName);
            String signValidString = getSignValidString(signs[0].toByteArray());
            return signValidString;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
 
    public static Signature[] getRawSignature(Context context, String packageName) {
        if (packageName == null || packageName.length() == 0) {
            return null;
        }
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
            if (info != null) {
                return info.signatures;
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
 
        return null;
    }
 
    private static String getSignValidString(byte[] paramArrayOfByte) throws NoSuchAlgorithmException {
        MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
        localMessageDigest.update(paramArrayOfByte);
        return toHexString(localMessageDigest.digest());
    }
 
    private static String toHexString(byte[] paramArrayOfByte) {
        if (paramArrayOfByte == null) {
            return null;
        }
        StringBuilder localStringBuilder = new StringBuilder(2 * paramArrayOfByte.length);
        for (int i = 0; ; i++) {
            if (i >= paramArrayOfByte.length) {
                return localStringBuilder.toString();
            }
            String str = Integer.toString(0xFF & paramArrayOfByte[i], 16);
            if (str.length() == 1) {
                str = "0" + str;
            }
            localStringBuilder.append(str);
        }
    }
}

写一个activity 在onCreate调用签名工具类(注:直接运行获取到的签名是调试模式下的)

public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String s = ApplySigningUtils.getRawSignatureStr(this,getPackageName());
        Log.d("应用签名:",""+ s);
    }
}

使用第三方平台提供的签名工具

比如微信

一般是去开放平台下载生成签名的apk,安装到手机。工具下载链接

输入要查询的apk的包名即可

参考链接

http://e.betheme.net/zz/235814.aspx?action=onClick
https://blog.csdn.net/m0_60746014/article/details/125432176

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值