【问题标题】:Google play app signing key hashGoogle Play 应用签名密钥哈希
【发布时间】:2017-06-04 15:00:50
【问题描述】:

我选择了 google play 应用签名,我知道 google 更改了应用的签名密钥,我找到了 Sha 1 证书但找不到 keyhash。

如何获取已发布应用的 keyhash 有没有办法从证书中提取它?

【问题讨论】:

    标签: android google-play


    【解决方案1】:

    您可以使用下一个命令将十六进制格式的 SHA-1 哈希(如在 Play 控制台中找到,请参阅发布管理 -> 应用签名)转换为 base64 哈希:

    echo 33:4E:48:84:19:50:3A:1F:63:A6:0F:F6:A1:C2:31:E5:01:38:55:2E | xxd -r -p | openssl base64
    

    输出:

    M05IhBlQOh9jpg/2ocIx5QE4VS4=
    

    这个哈希值可以在设置 Facebook 应用时使用。

    【讨论】:

    • 适用于 Windows 中的 git bash。您可能需要安装 openssl。 code.google.com/archive/p/openssl-for-windows/downloads
    • 这是 Stackoverflow 上的最佳答案
    • 每次上传捆绑包时这个哈希键是否都会改变?在那种情况下,必须去 Facebook 控制台并手动更新也有
    【解决方案2】:

    您可以从 Sha1 证书签名中提取 keyhash。密钥哈希通常通过以下方式提取:

    public static String getKeyHash(final Context context) {
        PackageInfo packageInfo = getPackageInfo(context, PackageManager.GET_SIGNATURES);
        if (packageInfo == null)
            return null;
    
        for (Signature signature : packageInfo.signatures) {
            try {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                return Base64.encodeToString(md.digest(), Base64.NO_WRAP);
            } catch (NoSuchAlgorithmException e) {
                Log.w(TAG, "Unable to get MessageDigest. signature=" + signature, e);
            }
        }
        return null;
    }
    

    您可以看到 SHA-1 版本的签名是 Base64 编码的。

    在 Google Play 开发者控制台的 App Signing 菜单下,您将看到如下所示的 Sha-1 证书签名:

    SHA1: 3B:DA:A0:5B:4F:35:71:02:4E:27:22:B9:AC:B2:77:2F:9D:A9:9B:D9
    

    基本上,您要做的就是将其更改为字节数组,然后 Base64 对该字节数组进行编码。您可以执行以下操作:

    byte[] sha1 = {
        0x3B, (byte)0xDA, (byte)0xA0, 0x5B, 0x4F, 0x35, 0x71, 0x02, 0x4E, 0x27, 0x22, (byte)0xB9, (byte)0xAc, (byte)0xB2, 0x77, 0x2F, (byte)0x9D, (byte)0xA9, (byte)0x9B, (byte)0xD9
    };
    Log.e("keyhash", Base64.encodeToString(sha1, Base64.NO_WRAP));
    

    您可以将此 keyhash 注册到 facebook android 登录设置或任何您喜欢的地方。

    【讨论】:

    • 当您从应用程序登录正确的帐户时,您还会在来自 facebook 的错误消息中获得此哈希值。有趣的是,虽然哈希看起来是相同的,但当我使用上述方法以编程方式生成它时,它可以工作,而在视觉上输入它却没有。
    • 下一条评论比较简单,所以我否决了这条
    • @GonzaloSerrano 但我的是平台无关的? >
    • @CoderSpinoza 另一个适用于任何 UNIX(Linux、MacOS)
    • 您可以使用在线工具,例如:cryptii.com/base64-to-hex。设置为ENCODE,左边放HEX,右边取HASHKEY
    【解决方案3】:

    最简单的方法是复制 Facebook 的错误消息并复制他们期望从那里获得的 keyhash。

    请确保您使用的是您下载的 Google Play 应用 :)

    【讨论】:

      【解决方案4】:

      echo "谷歌在游戏控制台中生成的应用签名密钥" | xxd -r -p | “openssl 路径”base64

      【讨论】:

      • 点评来源: 您好,请不要只用命令回答。尝试对您的解决方案如何工作提供一个很好的描述。见:How do I write a good answer?。谢谢
      【解决方案5】:

      首先需要相同的重要工具

      1.OpenSSl:安装在你的电脑上Download Here 2.在您的PC或笔记本电脑上安装Java程序Download Now

      简单地运行command promt 1.进入你的目录 2.cd 程序文件 3.选择你安装的java程序 然后复制所有没有c盘的目录,然后用cd复制command promt中的目录 4.keytool -exportcert -alias gci -keystore D:\folder name 在哪里放置你的发布密钥 |C:\openssl\bin\openssl sha1 -binary |C:\openssl\bin\openssl base64

      for more information Visit here

      【讨论】:

        猜你喜欢
        • 2017-12-01
        • 2011-08-13
        • 2021-06-22
        • 1970-01-01
        • 1970-01-01
        • 2017-04-25
        • 2021-02-16
        • 2018-07-29
        • 2019-01-10
        相关资源
        最近更新 更多