web-dev-qa-db-ja.com

署名済みAPKからキーハッシュを取得する方法はありますか?

署名済みAPKからキーハッシュを取得する方法はありますか?署名済みのAndroid apkファイルがあり、Facebook SDKのこのAPKのキーハッシュを検索する必要があります。jarsignerなどの方法でこれを実行できますか?
助言がありますか?

29
Zheng Li

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. スタジオでプロジェクトを開き、gradleアイコンをクリックします。
  2. アプリを選択->タスク-> Android-> SigningReport

これにより、md5キーとsha1キーを使用してデバッグとリリースの証明書を出力するgradleタスクが実行されます

39
amalBit

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

37
user521297

Openssaは here からダウンロードできます

  1. 署名を生成するには、PCにopensslをインストールする必要があります。ここからopensslをダウンロードしていない場合
  2. C:で、opensslフォルダーを作成します
  3. ダウンロードしたopenssl Zipファイルの内容をC:ドライブのopensslフォルダーに抽出します
  4. コマンドプロンプトを開く
  5. コマンドプロンプトでC:\ openssl\binのopensslのビンに移動します
  6. 次のコマンドを実行して、キーハッシュを生成します。ハッシュキーの生成中に、パスワードを尋ねる必要があります。

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

注:上記のコードでは、ユーザーへのパスを指定する必要があることに注意してください(つまり、私の場合はC:\ Users\Anhsirk、ユーザーアカウントでこれを変更するだけです。

パスワードをAndroidとして指定します。パスワードを求めない場合は、キーストアのパスが間違っています。

9
Shani Goriwal

Facebookアプリを作成したとき。私はAndroidキーストアを使用しました。そのためのハッシュ関数があります。一般的にGoogle APIで使用されます。(手順についてはそこを参照)。それ以外の場合..あなたの基本的にねじ込み。方法はありません。

0
SonicWind