web-dev-qa-db-ja.com

Androidキーストアキーパスが正しいことを確認してください

Android keytool and jarsigner。ツールはキーストア、キーストアのパスワード、エイリアス名、エイリアス/キーのパスワードを取得します。 'エイリアス/キーに指定されたパスワードが正しいかどうかを明示的に確認する方法を見つけようとしています。

何か案は?また、jarファイルなしで署名する必要があります。コンテキストでそのファイルを取得するには時間がかかるため、後で停止するのではなく、すぐに中止します。

29
Narfanator

パスワードを変更せずに、パスワードが正しいかどうかを確認することもできます。このコマンドでキーストアのプロパティをリストすることでそれを行いました:

keytool -list -keystore <keystorefile> -storepass <passwordtocheck>
52
jlafay

いくつかの方法で実行できます。

A. keytoolを使用

コマンドkeytool -keypasswd -keystore <keystore> -alias <alias> -storepass <storepass> -keypass <keypass> -new <keypass>を実行すると、キーストアパスワードが間違っている場合はエラーKeystore was tampered with, or password was incorrectが、エイリアスパスワードが間違っている場合はエラーCannot recover keyが表示されます。残念ながら、どちらの場合も戻りコードは1です。そのため、エラーの種類を賢く知りたい場合は、プログラムの出力を解析する必要があります。

B.小さなJavaプログラム

これらの線に沿って何か:

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

try (FileInputStream fis = new FileInputStream(keystore)) {
    ks.load(fis, ksPw.toCharArray());
}

ks.getEntry(alias, new KeyStore.PasswordProtection(aliasPw.toCharArray()));

キーストアのパスワードが間違っている場合は4行目でJava.io.IOExceptionで失敗し、エイリアスパスワードが間違っている場合は7行目でJava.security.UnrecoverableKeyExceptionで失敗します。

16
rxg