【问题标题】:How to find signature of apk file?如何找到apk文件的签名?
【发布时间】:2016-07-25 01:44:07
【问题描述】:

查找 apk 文件签名的最简单方法是什么?请注意,我不是在询问代码。我只想从我的电脑上找到它。像这样的签名 975yYkKAQF+KST7g3ASHvHkYopq=

【问题讨论】:

    标签: android signature


    【解决方案1】:
    $ $ANDROID_SDK/build-tools/$BUILD_TOOLS_VERSION/apksigner verify --print-certs -v $APK_FILE
    

    例子:

    $ /Users/hborders/android/build-tools/29.0.2/apksigner verify --print-certs -v ~/Desktop/my-apk.apk
    
    Verifies
    Verified using v1 scheme (JAR signing): true
    Verified using v2 scheme (APK Signature Scheme v2): true
    Verified using v3 scheme (APK Signature Scheme v3): false
    Number of signers: 1
    Signer #1 certificate DN: CN=Bob Smith, OU=Acme, O=Acme, L=San Francisco, ST=California, C=US
    Signer #1 certificate SHA-256 digest: f1f2f3f3f21f26a67s76a6a76a76a76a76a67c78c8c78c709c90c90c09932451
    Signer #1 certificate SHA-1 digest: 839103847abdefcbade123713957358920
    Signer #1 certificate MD5 digest: 182831983712923f2e2e2f2a2c2fbc25
    Signer #1 key algorithm: RSA
    Signer #1 key size (bits): 1024
    Signer #1 public key SHA-256 digest: 8acaca8cabcaabdadc8cc99cc695ace47aec4c747c746c476cae4657c47c4765
    Signer #1 public key SHA-1 digest: b11bca4123bea24befbe5b8be9768ef078
    

    apksigner 是 Android SDK 的一部分,位于 build-tools 目录中。这是print-apk-signature 使用的工具。

    【讨论】:

      【解决方案2】:
      Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
      for (Signature sig : sigs)
      {
          Trace.i("MyApp", "Signature hashcode : " + sig.hashCode());
      }
      

      http://developer.android.com/reference/android/content/pm/PackageManager.html

      这可能会有所帮助

      首先,解压APK并解压文件/META-INF/ANDROID_.RSA(这个文件也可能是CERT.RSA,但应该只有一个.RSA文件)。

      然后发出这个命令:

      keytool -printcert -file ANDROID_.RSA 你会得到这样的证书指纹:

       MD5:  B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB
       SHA1: 16:59:E7:E3:0C:AA:7A:0D:F2:0D:05:20:12:A8:85:0B:32:C5:4F:68
       Signature algorithm name: SHA1withRSA
      

      然后再次使用 keytool 打印出您的签名密钥库的所有别名:

      keytool -list -keystore my-signing-key.keystore 您将获得别名列表及其证书指纹:

      android_key,2010 年 1 月 23 日,PrivateKeyEntry, 证书指纹(MD5):B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB 瞧!我们现在可以确定该 apk 已使用此密钥库以及别名“android_key”进行签名。

      Keytool 是 Java 的一部分,因此请确保您的 PATH 中包含 Java 安装目录。

      How do I find out which keystore was used to sign an app?

      【讨论】:

      • 请查看我更新的问题。我不是在问代码
      • 为什么要手动查找签名本身还是要获取签名后的apk的路径?
      • 不,我想找到签名本身。不仅仅是路径
      • 但是有一个问题,/////android_key,2010 年 1 月 23 日,PrivateKeyEntry,证书指纹 (MD5):B3:4F:BE:07:AA:78:24:DC:CA: 92:36:FF:AE:8C:17:DB 瞧!我们现在可以确定 apk 已使用此密钥库和别名 'android_key' 进行签名。////// 查看我的问题和证书的格式。为什么不一样?我想获得与此相同的格式 "975yYkKAQF+KST7g3ASHvHkYopq="
      • @user3548321 你得到解决方案了吗?
      【解决方案3】:

      您可以使用 Java 7 的密钥和证书管理工具 (keytool) 来获取应用程序的签名。运行以下命令

      keytool -printcert -jarfile app-release.apk
      

      您也可以get Signature of a Keystore请查看此帖:How we can check SHA1 or Signature of APK and Keystore file

      【讨论】:

      • 对我不起作用,它说“不是签名的 jar 文件”
      【解决方案4】:

      https://github.com/warren-bank/print-apk-signature

      例如:print-apk-signature ./file.apk SHA-1

      【讨论】:

        猜你喜欢
        • 2011-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-31
        • 2018-03-11
        • 2016-06-18
        相关资源
        最近更新 更多