Hallo Leute,
ich versuche ein Verschlüsselungsprogramm zu schreiben.
Verschlüsseln:
1) AES-Key erstellen
2) AES-Key mit RSA verschlüsseln
3) Text mit AES verschlüsseln
4) verschlüsselten AES-Key und verschlüsselten Text zurückgeben
Entschlüsseln:
1) verschlüsselten AES-Key auslesen und entschlüsseln
2) Text mit AES entschlüsseln
3) entschlüsselten Text zurückgeben
Allerdings komme ich da nicht weiter, da ich nicht weiß, wie ich aus dem entschlüsselten Key (als String) wieder ein Objekt der Klasse Key mache.
ich versuche ein Verschlüsselungsprogramm zu schreiben.
Verschlüsseln:
1) AES-Key erstellen
2) AES-Key mit RSA verschlüsseln
3) Text mit AES verschlüsseln
4) verschlüsselten AES-Key und verschlüsselten Text zurückgeben
Java:
public String encrypt(String Text, PublicKey publicKey) throws Exception{
String encrypted = "";
//AES Key erzeugen
KeyGenerator keygen = KeyGenerator.getInstance("AES");
keygen.init(new SecureRandom(new byte[] { 1, 2, 3, 4, 5 }));
SecretKey key = keygen.generateKey();
//AES Key mit RSA verschlüsseln und hinzufügen
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
encrypted += new String(cipher.doFinal(key.getEncoded())) + "\n";
//Nachricht mit AES verschlüsseln und hinzufügen
cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
encrypted += new String(cipher.doFinal(Text.getBytes()));
return encrypted;
}
Entschlüsseln:
1) verschlüsselten AES-Key auslesen und entschlüsseln
2) Text mit AES entschlüsseln
3) entschlüsselten Text zurückgeben
Allerdings komme ich da nicht weiter, da ich nicht weiß, wie ich aus dem entschlüsselten Key (als String) wieder ein Objekt der Klasse Key mache.
Java:
public String decrypt(String Verschlüsselter_Text, PrivateKey privateKey) throws Exception{
String decrypted = "";
//AES Key entschlüsseln
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
String keyAlsString = new String(cipher.doFinal(decrypted.split("\n")[0].getBytes()));
Key key; //??? Key erstellen? <------- <--------
Verschlüsselter_Text = Verschlüsselter_Text.substring(Verschlüsselter_Text.split("\n")[0].length()+1);
//Text entschlüsseln
cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, key);
decrypted = new String(cipher.doFinal(Verschlüsselter_Text.getBytes()));
return decrypted;
}