当前位置: 首页 > 知识库问答 >
问题:

有没有办法从签名的APK中获取密钥哈希?

聂风史
2023-03-14

有没有办法从签名的APK中获取密钥哈希?我们有一个签名的Android apk文件,我们想找出这个apk的密钥散列,用于Facebook SDK。我们可以用jarsigner这样的方法吗<有什么建议吗?

共有3个答案

欧阳嘉
2023-03-14

你可以从这里下载openssa

>

  • 要生成签名,您需要在pc上安装openssl。如果没有,请从此处下载openssl
  • 在C:中,创建openssl文件夹
  • 下载的openssl zip文件的内容解压缩到C:drive中的openssl文件夹中
  • 打开命令提示符
  • 移动到openssl的bin,即命令提示符中的C:\openssl\bin
  • 运行以下命令生成密钥哈希。在生成hashkey时,它应该询问您的密码。

    keytool -exportcert -alias androiddebugkey -keystore   "C:\Users\Anhsirk.android\debug.keystore" | openssl sha1 -binary | openssl base64
    

    注意:在上面的代码中,请注意,您需要将您的路径提供给user(即在我的情况下是C:\用户\Anhsirk,您只需要为您的用户帐户更改此路径。

    输入Android密码。如果它不请求密码,则密钥库路径不正确。

  • 微生良策
    2023-03-14

    对于windows用户来说,从openssl获取密钥有时可能会很棘手。。我总是用这个来找到正确的签名。。只需将此代码粘贴到onCreate()中并运行。

     // Add code to print out the key hash
      try {
      PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
      for (Signature signature : info.signatures) {
      MessageDigest md = MessageDigest.getInstance("SHA");
      md.update(signature.toByteArray());
      Log.e("MY KEY HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
          }
      } catch (NameNotFoundException e) {
    
      } catch (NoSuchAlgorithmException e) {
    
      }
    

    更新:

    使用Android studio(2.1.2):

    1. 在Studio上打开你的项目,然后点击gradle图标。
    2. 选择您的应用程序-

    这将运行一个gradle任务,该任务将打印带有md5和sha1密钥的调试和发布证书

    庄瀚玥
    2023-03-14

    在linux上,我使用以下命令从apk获取密钥哈希:

     keytool -list -printcert -jarfile [path_to_your_apk] | grep -Po "(?<=SHA1:) .*" |  xxd -r -p | openssl base64
    

    适用于Mac用户(OS X),因为没有grep-P支持

    keytool-list-printcert-jarfile~/Downloads/YOURAPKFILE。apk | grep“SHA1:| cut-d”“-f3 | xxd-r-p | openssl base64

     类似资料:
    • 我已经用default debug.keystore密钥签署了我的apk,但不幸的是我的系统被破坏了,现在我需要从已经签署的apk中获取密钥存储。 用新apk替换旧apk。 我有MD5和SHA的指纹,但我可以把它们作为密钥库来签署APK。

    • 我正在intellij和Gradle下开发android应用程序。并使用以下方式生成密钥库文件: 然后使用build.gradle中的密钥库文件: 任务“:MyExample:PackageRelease”执行失败。 无法从密钥存储区读取密钥

    • 问题内容: 我想从数据库中的表中获取列名列表。使用编译指示,我会得到一个元组列表,其中包含很多不需要的信息。有没有办法只获取列名?所以我最终可能会遇到这样的事情: [Column1,Column2,Column3,Column4] 之所以绝对需要此列表,是因为我想在列表中搜索列名并获取索引,因为很多代码中都使用了索引。 有没有办法得到这样的清单? 谢谢 问题答案: 您可以使用sqlite3和pep

    • 我想使用azure密钥库来存储没有azure ad身份验证的控制台应用程序的连接字符串。 那么,没有Azure AD有没有办法访问Azure密钥库呢?

    • 问题内容: 因此,我使用Python 3.2.1的cElementTree解析了一些XML文件,并且在解析过程中,我注意到某些标签缺少属性信息。我想知道是否有任何简单的方法来获取xml文件中这些元素的行号。 问题答案: 查看文档,我看不到使用cElementTree做到这一点。 但是,我对lxml的XML实现版本感到幸运。使用libxml2,它的替换量几乎下降了。元素具有属性。(以及获得许多其他X

    • 问题内容: 我试图找到一种方法来查找数据库中的表的名称(如果存在)。我发现从sqlite cli我可以使用: 然后对于字段: 这显然在python中不起作用。有没有办法用python做到这一点,还是我应该只使用sqlite命令行? 问题答案: 您应该能够从表中访问表名称。 列名不能直接访问。获取它们的最简单方法是查询表并从查询结果中获取列名。