2012-03-19 11 views
2

私はアンドロイドライブラリを持っています。私は有効なユーザーだけがこのライブラリを使用するかどうかをチェックする関数を追加する必要があります。これを行うには、アンドロイドのキーストアから値を読み取る必要があります。どのようにしてアンドロイドのキーストアから値を読み取ることができますか?キーストアの値を読み取る方法は?

+0

「アンドロイドキーストア」とはどういう意味ですか?証明書の信頼ストアですか?あなたは正確に何をしようとしていますか? –

+0

私は市場にアップロードする前にapkファイルに署名するために使用する.keystoreファイルを参照しています。 – Chrishan

+0

OKですが、何をしようとしていますか?このファイルは開発者ワークステーションにのみ存在し、アプリケーションには含まれません。あなたは、アプリケーションから署名証明書を取得することができますが、それは本当に '有効な'ユーザーを識別するのに役立ちません。あなたのアプローチの詳細を提供してください。 –

答えて

0

PacakgeInfo.signatures」を使用すると、アプリの署名証明書を取得できます。通常、署名は1つのみであるため、証明書が必要です(証明書を保持していますが、「署名」と呼ばれています)。 BLOBのSHA1などのハッシュを取って、比較のために指紋を付けることができます。

PackageInfo pi = packageManager.getPackageInfo(getPackageName()); 
byte[] certificate = pi.signatures[0].toByteArray(); 
MessageDigest md = MessageDigest.getInstance("MD5"); 
byte[] fingerprint = md.digest(certificate); 
String hexFingerprint = toHexString(fingerprint); 

もちろん、このチェックを有効にするには、あなたのライブラリに指紋を埋め込む必要があります。それを逆コンパイルして指紋を置き換えることは非常に簡単です。

+0

どうすればいいですか? 証明書の指紋(MD5):94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98 – Chrishan

+0

' MessageDigest'クラスを使用して指紋を計算します。その後、おそらく16進文字列に変換します。更新された回答をご覧ください。 –

関連する問題