Есть ли способ получить ключевой хэш из подписанного 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):
- откройте проект в studio и нажмите на значок gradle.
- выберите приложение - > задачи - > 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 из здесь
- для создания подписи вам нужно openssl установлен на вашем компьютере. Если вы нет одной загрузки openssl отсюда
- в C: создайте папку openssl
- извлеките содержимое загруженного zip-файла openssl в openssl папка в C: drive
- открыть командную строку
- переместить в корзину openssl i.e C:\openssl\bin в командной строке
-
выполнить следующая команда для создания 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.(См. там инструкции). Если вы владеете приложением и подписали его; это не должно быть проблемой в противном случае..вашему повезло.Нет никакого способа.