Entspricht OpenSSL-Befehlen in java

Ich bin nicht sehr vertraut mit der Verschlüsselung von Dateien in Java oder OpenSSL. Ich kenne die Grundlagen aus der Schule, habe sie aber nie umgesetzt.

Jetzt habe ich die folgenden 3 Befehle erhalten:

//generate random base64 private key
openssl rand -base64 32 -out (keypath)
//Encrypt random key with public key
openssl rsautl -encrypt -inkey (encryptionkey) -pubin -in (input) -out (output)
//encrypt file
openssl enc -aes-256-cbc -salt -in (input) -out (output) -pass file:(keypath)

Ich muss dies genau in Java replizieren. Gibt es eine einfache Möglichkeit, dies zu tun? Gibt es eine Bibliothek, mit der ich das einfacher machen kann?

Für die erste Zeile benutze ich die SecureRandom-Funktion aus Java 7, um ein Byte-Array zu generieren, das ich dann mit der Apache Commons-Codec-Bibliothek in base64 einbinde. wie so:

byte[] bytes = new byte[32];
new SecureRandom().nextBytes(bytes);
String test = new String(Base64.encodeBase64(bytes));
test = test.substring(0, Math.min(test.length(), 10));

Wenn ich mich nicht irre, sollte dies dasselbe tun.

Zum zweiten Mal muss ich die Datei mit der Ausgabe des obigen Skripts mit einem bereitgestellten öffentlichen RSA-Schlüssel verschlüsseln. Gibt es einen Unterschied zwischen dem Verschlüsseln einer Datei oder den Daten in der Datei? Bedeutet das, dass die aktuelle Datei Bits hinzufügt?

Das dritte ist jedoch der Punkt, an dem es schwierig wird, da es ein Salt und den Verschlüsselungsstandard aes-256-cbc benötigt. Ich hoffe, es gibt eine Bibliothek, die alle erforderlichen Funktionen umfasst. Wenn ja, kann mich jemand in die richtige Richtung weisen? Ich habe über die Kryptobibliothek der Hüpfburg gelesen, aber nicht viel Glück gehabt, die Dinge zu finden, die ich brauche.

mit freundlichen Grüße

Antworten auf die Frage(2)

Ihre Antwort auf die Frage