Ich versuche den Android Key Store Provider zu verwenden, der in Android 4.3 verfügbar war, um einen privaten Schlüssel sicher zu speichern und diesen privaten Schlüssel dann zum Verschlüsseln und Decodieren von Daten zu verwenden.
Ich denke, ich habe den richtigen Ansatz und Code dafür implementiert, aber ich stehe derzeit vor einem seltsamen Problem, das ich nicht verstehen kann.
Ich habe eine Klasse namens KeyStorage, die ich verwende, um das Schlüsselpaar zu erstellen, den KeyStore zu laden und den privaten Schlüssel abzurufen. Der Code für diese Klasse lautet wie folgt:
%Vor%Ich habe dann eine Klasse namens CredentialStore, in der ich versuche, das zu verwenden. Ich erstelle einen Alias namens "MySecureKey" und versuche, einen privaten Schlüssel darauf zu erstellen und zu speichern. Wie Sie sehen können, versuche ich das neue Schlüsselpaar basierend auf dem Alias zu erstellen, lade den Schlüsselspeicher und schließlich den privaten Schlüssel. Es funktioniert jedoch nicht.
%Vor%Ich bekomme die Protokolle wie folgt:
%Vor%Wenn ich also die Aliase in der loadKeyStore-Methode überprüfe, sieht es so aus, als wäre es da, wenn es im Log zurückkommt. Wenn ich jedoch versuche, es mit der loadKeyStore-Methode aufzurufen, bekomme ich das Protokoll, dass es den Schlüssel "MySecureKey" nicht finden kann.
Ich kann keinen Grund dafür finden und die Online-Recherche hat sich als unfruchtbar erwiesen, also habe ich mich gefragt, ob jemand eine Idee hat, was schief gehen könnte?
Ihre Methode, um zu überprüfen, ob Ihr Schlüssel existiert, ist fehlerhaft:
%Vor% Laut javadoc .isKeyEntry()
hat das folgende Verhalten
Gibt true zurück, wenn der mit dem angegebenen Alias angegebene Eintrag von erstellt wurde Ein Aufruf von setKeyEntry, oder erstellt durch einen Aufruf von setEntry mit a PrivateKeyEntry oder ein SecretKeyEntry.
aber Ihr Schlüssel wurde nicht durch setEntry()
erstellt. Ich denke, wenn Sie nur den Schlüssel mit
es wird nicht null sein.
loadPrivateKey in Ihrer Klasse verwendet den "Alias" nicht, um den Schlüssel abzurufen. Es benutzt die Konstante einer anderen Klasse, also bin ich mir nicht sicher, was Sie hier erwarten.
Tags und Links android encryption android-keystore private-key