Есть ли способ получить ключевой хэш из подписанного APK?

есть ли способ получить ключевой хэш из подписанного APK? У нас есть подписанный файл Android apk, и мы хотим узнать ключевой хэш этого APK, для Facebook SDK. Можем ли мы сделать это с помощью чего-то вроде jarsigner?
какие предложения?

4 ответов


для пользователей 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. выберите приложение - > задачи - > android - > SigningReport

Это будет запускать gradle задача, которая напечатает сертификат отладки и выпуска с ключами md5 и sha1


в 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 " " -f 3 | xxd -r -p | openssl base64


вы можете скачать openssa из здесь

  1. для создания подписи вам нужно openssl установлен на вашем компьютере. Если вы нет одной загрузки openssl отсюда
  2. в C: создайте папку openssl
  3. извлеките содержимое загруженного zip-файла openssl в openssl папка в C: drive
  4. открыть командную строку
  5. переместить в корзину openssl i.e C:\openssl\bin в командной строке
  6. выполнить следующая команда для создания keyhash. При создании hashkey он должен спросить у вас пароль.

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

Примечание: в приведенном выше коде обратите внимание, что вам нужно дать свой путь пользователю(i.e в моем случае это C:\Users\Anhsirk, вам просто нужно изменить это для своей учетной записи пользователя.

дайте пароль как android. Если он не запрашивает пароль, путь к хранилищу ключей неверен.


когда я построил свое приложение Facebook. Я использовал хранилище ключей Android. Для этого существует функция хэширования. Обычно используется в API Google.(См. там инструкции). Если вы владеете приложением и подписали его; это не должно быть проблемой в противном случае..вашему повезло.Нет никакого способа.