Hallo,
ich möchte zwei Klassen implementieren, eine Encrypt die, auf eine Datei angewandt, diese verschlüsselt und einen Schlüssel speichert, die andere Decrypt, die die erstellte Datei wieder entschlüsselt. Ich habe wirklich viel im Internet recherchiert (und auch viel gefunden..) aber bin einfach nicht dahinter gekommen, wo bei mir der Fehler liegt. Evtl sieht das ja jemand hier auf einen Blick und kann mir einen Tipp geben..
Und die Datei zum entschlüsseln:
Bin über jeden Tip sehr dankbar!
ich möchte zwei Klassen implementieren, eine Encrypt die, auf eine Datei angewandt, diese verschlüsselt und einen Schlüssel speichert, die andere Decrypt, die die erstellte Datei wieder entschlüsselt. Ich habe wirklich viel im Internet recherchiert (und auch viel gefunden..) aber bin einfach nicht dahinter gekommen, wo bei mir der Fehler liegt. Evtl sieht das ja jemand hier auf einen Blick und kann mir einen Tipp geben..
Java:
package cifrar;
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import sun.security.rsa.RSAKeyFactory;
import sun.security.rsa.RSAKeyPairGenerator;
public class RSAEncrypt {
private KeyPair key_pair = null;
private Cipher algo = null;
public void generateKey() throws NoSuchAlgorithmException {
KeyPairGenerator genKey = KeyPairGenerator.getInstance("RSA");
genKey.initialize(512);
key_pair = genKey.generateKeyPair();
}
public void saveKey() throws FileNotFoundException, IOException {
ObjectOutputStream filekey = new ObjectOutputStream(new FileOutputStream("./ficheros_prueba/"+"RSAClavePrivate.ser"));
filekey.writeObject(key_pair.getPrivate());
filekey.close();
ObjectOutputStream keyPublic = new ObjectOutputStream(new FileOutputStream("./ficheros_prueba/"+"RSAClavePublic.ser"));
keyPublic.writeObject(key_pair.getPublic());
keyPublic.close();
}
public void setAlgorithm() throws NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeyException {
Cipher algo = Cipher.getInstance("RSA");
algo.init(Cipher.ENCRYPT_MODE, this.key_pair.getPublic());
this.algo = algo;
}
public Cipher getAlgorithm() {
return this.algo;
}
public KeyPair getKey() {
return this.key_pair;
}
}
Und die Datei zum entschlüsseln:
Java:
package descifrar;
import java.io.*;
import java.security.*;
import javax.crypto.*;
public class RSADecrypt {
private KeyPair key_pair = null;
private Cipher algo = null;
public void readKey() throws IOException, ClassNotFoundException {
FileInputStream fich = new FileInputStream("./ficheros_prueba/"+"RSAClavePrivate.ser");
ObjectInputStream fichread = new ObjectInputStream(fich);
FileInputStream fich2 = new FileInputStream("./ficheros_prueba/"+"RSAClavePublic.ser");
ObjectInputStream fichread2 = new ObjectInputStream(fich2);
PrivateKey key = (PrivateKey)fichread.readObject();
PublicKey keyPublic = (PublicKey)fichread2.readObject();
this.key_pair = new KeyPair(keyPublic, key);
fich.close();
}
public void setAlgorithm() throws NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeyException {
Cipher algo = Cipher.getInstance("RSA");
algo.init(Cipher.DECRYPT_MODE, this.key_pair.getPrivate());
this.algo = algo;
}
public Cipher getAlgorithm() {
return this.algo;
}
}
Bin über jeden Tip sehr dankbar!