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

为什么keytool生成不同的facebook androiddebugkey哈希?

昝存
2023-03-14

我正在创建使用Facebook登录SDK的Android应用程序。

我想生成调试密钥哈希。在Facebook网站上我发现了这样的命令:

keytool-exportcert-alias androiddebugkey-keystore c:\users\redio\.android\debug.keystore“c:\openssl\bin\openssl”sha1-binary“c:\openssl\bin\openssl”base64

接下来我输入了密码:android

此命令生成了此哈希:quhvjkstip5gc7hpezwf89mwhws=

然后我把它贴在facebook开发者控制台里,facebook还在说密钥哈希无效。我知道我可以从警告消息中复制密钥哈希,并将其粘贴到facebook开发人员控制台中。但我的问题是为什么keytool生成错误的密钥哈希?

共有1个答案

公良昕
2023-03-14

我也有很多问题让keytool生成一个有效的哈希,但我实现了下面我找到的方法,并且能够注销一个有效的哈希。代码的确切来源有点不清楚,但这篇博文是一个很好的猜测。

public static String printKeyHash(Activity context) {
    PackageInfo packageInfo;
    String key = null;
    try {
        //getting application package name, as defined in manifest
        String packageName = context.getApplicationContext().getPackageName();

        //Retriving package info
        packageInfo = context.getPackageManager().getPackageInfo(packageName,
                PackageManager.GET_SIGNATURES);

        Log.e("Package Name=", context.getApplicationContext().getPackageName());

        for (Signature signature : packageInfo.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            key = new String(Base64.encode(md.digest(), 0));

            // String key = new String(Base64.encodeBytes(md.digest()));
            Log.e("Key Hash=", key);
        }
    } catch (PackageManager.NameNotFoundException e1) {
        Log.e("Name not found", e1.toString());
    }
    catch (NoSuchAlgorithmException e) {
        Log.e("No such an algorithm", e.toString());
    } catch (Exception e) {
        Log.e("Exception", e.toString());
    }

    return key;
}
 类似资料:
  • 问题内容: 这个问题与PHP的实现有关。对于此问题,不计算盐的前7个字符,因此盐’ ‘的长度为1,因为它仅是盐的1个字符和元数据的7个字符。 当使用长度超过22个字符的盐字符串时,生成的哈希值不会发生变化(即,截断),而当使用长度小于21个字符的字符串时,盐将被自动填充(显然带有’ ‘字符);这非常简单。但是,如果给定一个Salt 20个字符和Salt 21个字符,并且除了21个长度的salt的最

  • 在我的应用程序中有一个facebook登录。我想添加一个Android应用程序到我的facebook应用程序,它需要从keystore文件中用keytool生成一个散列。 如果我在我的debug键(这是默认的android debug键)上运行该命令,它只生成一个16个字符长的散列。 https://photos.app.goo.gl/npcsaje3a2yfxtox7

  • 问题内容: 我正在使用具有Spring安全性的BCryptPasswordEncoder。我的期望是,对于相同的输入,我将始终获得相同的输出。但是对于相同的输入,我得到不同的输出。您可以使用以下代码段对其进行测试: 输出:$ 2a $ 10 $ cYLM.qoXpeAzcZhJ3oXRLu9Slkb61LHyWW5qJ4QKvHEMhaxZ5qCPi 输出2:$ 2a $ 10 $ KEvYX9y

  • 我正在使用带有Spring Security的BCryptPasswordEncoder。我的期望是,对于相同的输入,我总是得到相同的输出。但是对于相同的输入,我得到不同的输出。您可以使用下面的代码片段对其进行测试: 输出:$2A$10$CYLM.QOXPEAZCZHJ3OXRLU9SLKB61LHYWW5QJ4QKVHEMHAXZ5QCPI 输出2:$2A$10$kevyx9yjj0f1x3wl

  • 我正在开发一款Android应用程序。在我的应用程序中,我集成了Facebook登录。我的facebook登录工作正常。但当我制作release apk并运行该应用程序并尝试登录Facebook时,它就不工作了。请看下面我的场景。 我生成如下的发布apk 然后我使用jks文件路径生成keyhash。 我得到了一个散列键,然后将其添加到开发人员配置文件设置中。 当我在我的设备上安装并运行apk并使用

  • 问题内容: 我可以跑: 而事实证明,并且有不同的MD5哈希值。的确,它们是不同的,这证实了这一点。 我还需要传递其他哪些标志,以便其输出随时间推移与相同输入保持一致? 问题答案: 相当于 文件不同的原因是因为将其输入文件名和修改时间放入了压缩文件中。当输入是管道时,它将使用空字符串作为文件名,并使用当前时间作为修改时间。 但是它也有一个选项,告诉它不要将名称和时间戳记放入文件中。因此,如果您显式编