Различия между ключевыми хешами, генерируемыми приложением для Android - PullRequest
1 голос
/ 02 апреля 2019

Я сгенерировал хэш ключа для входа в систему с помощью этого метода.

 public void printHashKey() {
    try {
        showLog("PackageName " + getPackageName());
        PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashKey = new String(Base64.encode(md.digest(), 0));
            showLog("printHashKey() Hash Key: " + hashKey);
        }
    } catch (NoSuchAlgorithmException e) {
        showLog("Error in printHashKey()" + e);
    } catch (Exception e) {
        showLog("Error in printHashKey()" + e);
    }
}    

Когда я сгенерировал подписанный apk, он сказал, что хэш ключа, сгенерированный вышеуказанным методом во время выполнения, может использоваться, и он не совпадает с хешем, зарегистрированным на консоли разработчика Facebook. Но все было в порядке, так как я несколько раз проверял его перед созданием отладочного подписанного apk. Таким образом, я сгенерировал еще один ключевой хэш с помощью этого

keytool -exportcert -alias androiddebugkey -keystore C:\Users\USER\Documents\keys\ws_key.jks | C:\OpenSSL\bin\openssl sha1 -binary | C:\OpenSSL\bin\openssl base64

Опять же, сгенерированный ключ не может войти в систему с Facebook.

Итак, я сгенерировал хэш ключа, сгенерировав ключ SHA1 с созданным приложением, а затем преобразовал сгенерированный ключ SHA1 в хеш.

Тогда проблема решилась. Я знаю, что релиз apk и debug apk имеют разные подписи и разные хэши. Мой вопрос - «Почему ключевые хеши отличаются, даже если приложение все еще находится в режиме отладки?»

...