Verschlüsselung mit Cipher & Key

Status
Nicht offen für weitere Antworten.

olikai

Mitglied
Mahlzeit =)

Ich schreibe zZ ein Programm, welches des Inhalt einer Textdatei verschlüsseln und auf Wunsch wieder entschlüsseln soll.
Ich verschlüssele den Text der Datei mithilfe eines Ciphers und einem Key, der mit der Methode
genKey(String key) generiert wird.
Hier mein Code:

Java:
protected static final String Algorithmus = "RSA/ECB/PKCS1Padding";
...

public static void encrypt(String filepath_Encrypt,String filepath_Key ) throws NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, Exception 
{
Cipher cipher = Cipher.getInstance(Algorithmus); 
cipher.init(Cipher.ENCRYPT_MODE, genKey(filepath_Key)); 
String s = read(filepath_Encrypt);
byte[] unverschlüsselt = s.getBytes();
byte[] verschlüsselt = cipher.doFinal(unverschlüsselt);
write(filepath_Encrypt, verschlüsselt);

}

public static void decrypt(String filepath, String key)
{

} 

/**
* Ein Key wird mithilfe des KeyPairGenerators generiert
* Dieser wird mit der oben angebenen RSA Verschlüsselung arbeiten
* @return
* @throws NoSuchAlgorithmException
*/
public static Key genKey(String key) throws NoSuchAlgorithmException
{
Key generate = new SecretKeySpec(key.getBytes(), Algorithmus );
return generate;
}

Anmerkung: write & read methoden dienen zum schrieben und lesen von Datein
Mein Problem: Ich wollte eine Verschlüsselung schreiben, die einen Key mithilfe eines Passworts generiert. Nach diesem Key soll dann verschlüsselt werden. Ich dachte die Klasse Key würde hierbei einen Random Key anfertigen, nach welchem ich dann verschlüssele. Ich habe ein kleines GUI für den "Keygen". Hierbei wollte ich, dass die Methode genKey(...) mir einen Random Key generiert und ich dann mit Eingabe dieses Schlüssels entschlüssele.

... Ist dieser Lösungsweg mit den von mir genutzten Objekten überhaupt möglich, habe ich bloß etwas falsch gemacht oder war meine Überlegung nur Mist =/.

Ich würde mich über eine passende Lösung freuen da ich das Beispiel so lösen möchte, wie ich es beschrieben habe

MFG Oli
 
Zuletzt bearbeitet von einem Moderator:
Was ist dein "Key"?

Das sollte doch eigentlich der Key für den Algorithmus sein, also i.A. eine Zahl.

zufällige Zahl -> Klasse Random (z.b.)

SecretKeySpec, was ist das, was bekommt das?
 
Du hast eingangs eine RSA-Verschlüsselung spezifiziert; das passt mit einem SecretKey nicht zusammen. Du musst Dir klar werden, wie welche Art von Verschlüsselung Du nutzen willst, ich nehme mal an eine Symmetrische, da Du mit Passworten arbeiten willst. Es gibt einen Standardalgorithmus um einen Schlüssel aus einem Passwort zu generieren und dann via DES zu verschlüsseln - "Password Based Encryption".

Es gibt dazu ein Codebeispiel in der Java Cryptography Extension Anhang A: Suche nach "Using Password-Based Encryption"
Java Cryptography Extension
 
Zuletzt bearbeitet:
Nope es liegt nicht an dem Zusatz, ich habe jedoch gelesen, das das Byte Array bei einem Vergleich ungenau wird, da ich mit .getBytes() arbeite. Gibt es dazu eine Alternative?
 
@kay Ich kenne die andere Lösung, ich habe bereits ein Beispiel damit zum laufen gebracht, ich möchte aber auch eines auf diesem Lösungsweg erhalten.
 
Wenn Du wirklich RSA verwenden willst, passt aber Deine Key-Geschichte nicht. Suchst Du einfach ein Beispiel für RSA? RSA ist ein asymmetrisches Verschlüsselungsverfahren und arbeitet mit einem Public/Private-Keypair.
 
Ich wollte am Anfang mit RSA arbeiten, da ich jedoch neu in dem Kapitel bin hab ich des nciht zum laufen gebracht und bin dh dabei erstmal die symetrische Methode zu probieren, habe eben zZ nur mein byte Problem, welches ich gerade versuche zu lösen indem ich meine read(...) Methode so umfunktioniere dass sie ein byte array und keinen string zuückgibt
 
Ich muss sagen ich finde es ziemlich scheisse einen Thread nachträglich dem Sinn zu entziehen. Es gibt hier Leute die helfen dir und du machst deren Hilfe kaputt, weil du die eigentliche Frage löscht.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben