Hallo Leute,
ich bins wieder einmal! Also ich habe hier im forum nachgesehen es gibt so ähnliche Problemstellungen aber das bezieht sich nur auf txt dateien und ich möchte es gerne für alle Dateien. Und zwar ich versuche sämtliche dateien einzulesen und mit rsa zu verschlüsseln und danach wieder auszugeben aber es sind nur 0 bytes vorhanden?
Ich poste mal den code.
danke im voraus
lg
ich bins wieder einmal! Also ich habe hier im forum nachgesehen es gibt so ähnliche Problemstellungen aber das bezieht sich nur auf txt dateien und ich möchte es gerne für alle Dateien. Und zwar ich versuche sämtliche dateien einzulesen und mit rsa zu verschlüsseln und danach wieder auszugeben aber es sind nur 0 bytes vorhanden?
Ich poste mal den code.
Code:
package AES;
import org.apache.commons.io.IOUtils;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class AES {
/**
* Zwischengespeichertes Schluesselpaar
*/
private static KeyPair keyPair;
/**
* Erzeugt ein RSA Schluesselpaar
*
* @return RSA Schluesselpaar
* @throws Exception
*/
public static KeyPair getKeyPair() throws Exception {
if (keyPair == null) {
KeyPairGenerator kpg;
try {
kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(2048);
keyPair = kpg.generateKeyPair();
} catch (NoSuchAlgorithmException e) {
throw new Exception(
"Fehler beim Erzeugen des Schluesselpaars: "
+ e.getMessage());
}
}
return keyPair;
}
/**
* Wrapped einen OutputStream in einen verschlüsselnden CipherOutputStream
*
* @param os
* OutputStream
* @return verschlüsselter OutputStream
* @throws Exception
*/
public static InputStream encryptInputStream(InputStream is)
throws Exception {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
System.out.println("Available: " + is.available());
is = new CipherInputStream(is, cipher); // hier müsste ein fehler vorliegen !!!
System.out.println("Available Encrypted: " + is.available());
} catch (Exception e) {
throw new Exception("Fehler beim Verschluesseln: " + e.getMessage());
}
return is;
}
/**
* Wrapped einen InputStream in einen entschlüsselnden CipherInputStream
*
* @param is
* InputStream
* @return entschlüsselnder Inputstream
* @throws Exception
*/
public static OutputStream decryptOutputStream(OutputStream os)
throws Exception {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
os = new CipherOutputStream(os, cipher);
} catch (Exception e) {
throw new Exception("Fehler beim Entschluesseln: " + e.getMessage());
}
return os;
}
/**
* Beispiel für Verschlüsselung mit CipherInputStream und CipherOutputStream
*
* @param args
*/
public static void main(String... args) {
try {
String file = "C:/Users/sbg00793/Downloads/killzone_shadow_fall_intercept-1920x1200.jpg";
String tempFile = "C:/Users/sbg00793/Downloads/test.tmp";
keyPair = getKeyPair();
InputStream is = new FileInputStream(file);
is = encryptInputStream(is);
OutputStream os = new FileOutputStream(tempFile);
IOUtils.copy(is, os);
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
danke im voraus
lg
Zuletzt bearbeitet: