2016-09-01 6 views
1

同じWebサービスを使用するアプリケーションがいくつかあります。どのアプリケーションがWebサービスを呼び出しているかを一意に識別する方法が必要です。APKハッシュ署名がこれまでに変更されていますか?

私がやったことは、他のパラメータと一緒にアプリのハッシュ署名を送信することでした。署名を取得するコードは、https://stackoverflow.com/a/25524657/17648と似ています。

次に、Webサービスへの呼び出しと比較してどのアプリケーションがどのメソッドを呼び出すかを見つけるために使用できるすべてのハッシュが格納されたテーブルがあります。

これを行うことで、Webサービスを呼び出すときにswitch文を作成する必要はありません。

これはうまくいきましたが、ハッシュシグネチャがapkをリリースしたすべてのバージョンで同じで、インストールされているすべての電話機/タブレットで同じになることを確認したいだけです。

答えて

1

実際にsignaturesフィールドにあるように、その答えのコードはキーストアから公開キーを実際にハッシュしています。 SHA-256ハッシュアルゴリズムを使用する場合、Java 7 +のkeytoolコマンドでキーストアのハッシュをダンプした場合と同じ値になります。

これは、二つの潜在的な問題につながる:

  1. あなたは同じ署名鍵ストアに署名した任意のアプリに同じ値を取得する必要があります。アプリケーションを区別するために、異なる署名キーストアを使用する必要があります。とにかくやっているかもしれません。

  2. Signaturebyte[]の正確な形式は、技術的には文書化されていません。これが将来のことを変える可能性があります。したがって、いつかバージョン依存ロジックが必要になるかもしれません。

IMHO、あなたのアルゴリズムは、単にアプリケーションIDを使用して、getPackageName()を使用するよりも有意に良好ではありません。

+0

はい、各アプリケーションには独自のキーストアがあります。ヒントチップbtw! – user3900456

関連する問題