通过android应用获取第三方应用签名的源码

本文介绍了一段在Android设备上通过第三方应用包名获取其MD5签名的源码,详细阐述了如何利用MD5加密技术结合命令行进行签名获取,源于Android Studio的使用技巧分享。

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

前言

以下代码,运行在Android上可以通过第三方的包名来获取第三方应用的MD5签名。

private Signature[] getRawSignature(Context paramContext, String paramString) {
        if ((paramString == null) || (paramString.length() == 0)) {
            errout("getSignature, packageName is null");

            return null;
        }

        PackageManager localPackageManager = paramContext.getPackageManager();
        PackageInfo localPackageInfo;

        try {
            localPackageInfo = localPackageManager.getPackageInfo(paramString,
                    64);

            if (localPackageInfo == null) {
                errout("info is null, packageName = " + paramString);

                return null;
            }
        } catch (PackageManager.NameNotFoundException localNameNotFoundException) {
            errout("NameNotFoundException");

            return null;
        }

        return localPackageInfo.signatures;
    }

    /**
    *paramString:第三方android应用的包名
    */
    private String getSign(String paramString) {
        Signature[] arrayOfSignature = getRawSignature(this, paramString);

        if ((arrayOfSignature == null) || (arrayOfSignature.length == 0)) {
            errout("signs is null");
        }
        StringBuffer sign = new StringBuffer();
        while (true) {
            return;

            int i = arrayOfSignature.length;

            for (int j = 0; j < i; j++)
                sign.append(MD5.getMessageDigest(arrayOfSignature[j].toByteArray()));
        }
        return sign.toString();
    }

MD5加密代码:

import java.security.MessageDigest;


public final class MD5 {
    public static final String getMessageDigest(byte[] paramArrayOfByte) {
        char[] arrayOfChar1 = {
                48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101,
                102
            };

        try {
            MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
            localMessageDigest.update(paramArrayOfByte);

            byte[] arrayOfByte = localMessageDigest.digest();
            int i = arrayOfByte.length;
            char[] arrayOfChar2 = new char[i * 2];
            int j = 0;
            int k = 0;

            while (true) {
                if (j >= i) {
                    return new String(arrayOfChar2);
                }

                int m = arrayOfByte[j];
                int n = k + 1;
                arrayOfChar2[k] = arrayOfChar1[(0xF & m >>> 4)];
                k = n + 1;
                arrayOfChar2[n] = arrayOfChar1[(m & 0xF)];
                j++;
            }
        } catch (Exception localException) {
        }

        return null;
    }

    public static final byte[] getRawDigest(byte[] paramArrayOfByte) {
        try {
            MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
            localMessageDigest.update(paramArrayOfByte);

            byte[] arrayOfByte = localMessageDigest.digest();

            return arrayOfByte;
        } catch (Exception localException) {
        }

        return null;
    }
}

通过命令行获取签名MD5

第一步、打开Android Studio的Tools->Open Terminal..
    或者是在cmd命令窗口中操作。
第二步、输入命令:keytool -v -list -keystore keystore.jks
keytool这个命令,来自于jdk。

来源于:日积月累–AndroidStudio使用技巧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值