konvertieren RSA-Publickey zu base64 und Umgekehrt
Ich habe einen publicKey/privateKey-paar erzeugt, die von dieser Funktion:
public static void generateKey() {
try {
final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM);
keyGen.initialize(2048);
final KeyPair key = keyGen.generateKeyPair();
File privateKeyFile = new File(PRIVATE_KEY_FILE);
File publicKeyFile = new File(PUBLIC_KEY_FILE);
//Create files to store public and private key
if (privateKeyFile.getParentFile() != null) {
privateKeyFile.getParentFile().mkdirs();
}
privateKeyFile.createNewFile();
if (publicKeyFile.getParentFile() != null) {
publicKeyFile.getParentFile().mkdirs();
}
publicKeyFile.createNewFile();
//Saving the Public key in a file
ObjectOutputStream publicKeyOS = new ObjectOutputStream(
new FileOutputStream(publicKeyFile));
publicKeyOS.writeObject(key.getPublic());
publicKeyOS.close();
//Saving the Private key in a file
ObjectOutputStream privateKeyOS = new ObjectOutputStream(
new FileOutputStream(privateKeyFile));
privateKeyOS.writeObject(key.getPrivate());
privateKeyOS.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Nun will ich konvertieren publicKey zu base64
beim schreiben und verwenden, die base64-Dekodieren zu erhalten, publicKey zurück ,wie kann das getan werden?
- Hah, dachte, ich war auf der Crypto-durch das Bearbeiten von e-sushi 😛
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Regel, wenn Sie möchten, speichern einer Datei in base-64 können Sie einfach Kodieren das byte-array. Sie können auch Base64-stream zwischen den
ObjectOutputStream
undFileOutputStream
(freundlicherweise zur Verfügung gestellt von der Base64-Klasse in Java 8).Jedoch, öffentliche und private Schlüssel haben die Standard-Kodierung, die kann zugegriffen werden mit Ihren
getEncoded
Methoden:Dieser speichert die öffentlichen Schlüssel in
SubjectPublicKeyInfo
format, etwas, das gelesen und geschrieben werden können, die von mehreren Arten von software und kryptographische Bibliotheken.Zum Beispiel, können Sie fügen Sie es in einem online-ASN.1 decoder (die online-decoder wird sich umwandeln in hex, aber es wird parse base-64 als auch). Das format der bytes, in sogenannten ASN.1 /DER (das ist ein generisches format, wie Kodieren Sie mehrere Arten von Dateien in XML).
Base64.getEncoder().encodeToString(encodedPublicKey);
ist alles, was ich brauchte...das wäre dann wahrscheinlich sein, dass offensichtlich jemand mehr vertraut mit diesen Datei-Formaten. Danke!