How to get APK signing signature?

后端 未结 3 1933
北恋
北恋 2020-11-22 15:00

Is there a way to retrieve the signature of the key used to sign an APK? I signed my APK with my key from my keystore. How can I retrieve it programmatically?

3条回答
  •  佛祖请我去吃肉
    2020-11-22 15:45

    The package manager will give you the signing certificate for any installed package. You can then print out the details of the signing key, e.g.

    final PackageManager packageManager = context.getPackageManager();
    final List packageList = packageManager.getInstalledPackages(PackageManager.GET_SIGNATURES);
    
    for (PackageInfo p : packageList) {
        final String strName = p.applicationInfo.loadLabel(packageManager).toString();
        final String strVendor = p.packageName;
    
        sb.append("
    " + strName + " / " + strVendor + "
    "); final Signature[] arrSignatures = p.signatures; for (final Signature sig : arrSignatures) { /* * Get the X.509 certificate. */ final byte[] rawCert = sig.toByteArray(); InputStream certStream = new ByteArrayInputStream(rawCert); try { CertificateFactory certFactory = CertificateFactory.getInstance("X509"); X509Certificate x509Cert = (X509Certificate) certFactory.generateCertificate(certStream); sb.append("Certificate subject: " + x509Cert.getSubjectDN() + "
    "); sb.append("Certificate issuer: " + x509Cert.getIssuerDN() + "
    "); sb.append("Certificate serial number: " + x509Cert.getSerialNumber() + "
    "); sb.append("
    "); } catch (CertificateException e) { // e.printStackTrace(); } } }

提交回复
热议问题