Ich versuche, einige Daten in meiner App mit this gist zu verschlüsseln.KeyStore kein Schlüssel für meinen Alias gefunden
Ich habe meine Apk mit meinem Pseudonym "Pablo" unterschrieben. Das Problem versucht, diesen Code auszuführen:
public static String encrypt(String alias, String plaintext) {
try {
PublicKey publicKey = getPrivateKeyEntry(alias).getCertificate().getPublicKey();
Cipher cipher = getCipher();
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return Base64.encodeToString(cipher.doFinal(plaintext.getBytes()), Base64.NO_WRAP);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private static KeyStore.PrivateKeyEntry getPrivateKeyEntry(String alias) {
try {
KeyStore ks = KeyStore
.getInstance("AndroidKeyStore");
ks.load(null);
KeyStore.Entry entry = ks.getEntry(alias, null);
if (entry == null) {
Log.w(TAG, "No key found under alias: " + alias);
Log.w(TAG, "Exiting signData()...");
return null;
}
if (!(entry instanceof KeyStore.PrivateKeyEntry)) {
Log.w(TAG, "Not an instance of a PrivateKeyEntry");
Log.w(TAG, "Exiting signData()...");
return null;
}
return (KeyStore.PrivateKeyEntry) entry;
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
return null;
}
}
Aber im die Ausnahme erhalten: "Kein Schlüssel unter Alias gefunden"
Jede Idee? Ich muss den gleichen Alias wie meine jks richtig eingeben?
Danke!
haben Sie versucht, auf den Kommandozeilen-Schlüsselspeicher Aliase Auflistung http: //stackoverflow.com/a/12894334/1056359 – thepoosh
Ja, das alias its ok, versuchen Im es auf debug mit signierten apk –
in welcher Zeile des Codes die Ausnahme auftritt? Stellen Sie sicher, dass Sie den richtigen Keystore von der Anwendung verwenden, in der Sie die App ausführen. Die verwendete Laufzeit-JRE könnte eine andere sein und einen anderen Schlüsselspeicher ohne Ihren Alias enthalten. – Sonic