Problem : Sie müssen den privaten RSA-Schlüssel an einem verschlüsselten Ort speichern. Versuchen Sie, KeyStore
für diesen Zweck zu verwenden.
Code-Snippet :
%Vor%Ich benutze Bouncycastle-Bibliothek für die Zertifikatgenerierung
Stapelverfolgung
%Vor%Es gibt mehrere Stellen, an denen Sie Änderungen vornehmen können:
1) Ich habe die Bibliothek bouncycastle in schwammycastle
geändert2) hinzugefügt
%Vor% 3) verwendet KeyStore keyStore = KeyStore.getInstance("BKS", "SC");
4) verwendet
%Vor%Der Grund ist, dass verschiedene Anbieter unterschiedliche binäre Schlüssel darstellen. Wenn Sie also Schlüssel mit einem Provider generieren, können Probleme auftreten, wenn Sie versuchen, den Binärstream mit einem anderen Provider wiederherzustellen.
Könnte ein schlechtes Passwort sein. Schreiben Sie Ihr Passwort von generatePassword
auf debug und verwenden Sie das Keytool, um zu überprüfen, ob es funktioniert, den Inhalt des generierten KeyStore zu lesen.
Ein anderer Stack Overflow / Spongy Castle Benutzer sagte, dass es geholfen hat, einen Konstruktor anzugeben, wenn er seinen KeyStore erstellt. Für ihn:
%Vor%statt
%Vor%Ich weiß, dass Sie nicht den Konstruktor verwenden, um einen Keystore zu erstellen, aber vielleicht helfen diese Informationen.
Wenn ich Ihren Code ausführe, bekomme ich eine Ausnahme, dass der private Schlüsseleintrag mit einem Passwort geschützt werden muss:
%Vor%Es sieht so aus, als ob Implementierungen von Java (sowohl von Oracle als auch von Android) einen privaten Schlüsseleintrag ohne Schutz erstellen könnten (im Keystore ist der Keystore selbst und jeder Eintrag hat seinen eigenen Passwortschutz), aber beim Laden benötigen sie ein obligatorisches Passwort . Um das zu beheben, geben Sie einfach das Passwort in KeyStore.getEntry ()
ein %Vor%Eine andere Möglichkeit ist die Verwendung von
%Vor%Der Link, auf den sich @Barret bezieht, ist dies Unbegrenzte Stärke Jce und Android
Ich hatte ein ähnliches Problem. In meinem Fall war das Passwort beim Speichern und Abrufen mit der String-Methode anders. Versuchen Sie, ein hart codiertes Passwort für den Debug-Zweck bereitzustellen.
Tags und Links java android encryption