Datei verschlüsseln

Status
Nicht offen für weitere Antworten.

lu.seifer

Mitglied
Ich würde gerne eine datei mit einem Passwort verschlüsseln.
Der Inhalt der Datei soll nur mit dem richtige Passwort ersichtlich sein.

Hab schon gesucht aber nix gescheites zu gefunden.

Weiss jemand rat? Hat jemand nen Link-tip zum Einsteig?
 
Es gibt ein Package crypto (wenn du ganz runterscrollst, da hat es noch ein paar Links). Vielleicht ist da was drunter.
 
Hier: (Benötigt JCE Package)

Code:
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;

public void setProvider() {
	java.security.Security.addProvider(new com.sun.crypto.provider.SunJCE());
}

public void encryptFile(String originalFile, String encryptedFile, String password) throws Exception {
		CipherOutputStream out;
		InputStream in;
		Cipher cipher;
		SecretKey key;
		byte[] byteBuffer;		
		cipher = Cipher.getInstance("DES");
		key = new SecretKeySpec(password.getBytes(), "DES");
		cipher.init(Cipher.ENCRYPT_MODE, key);
		in = new FileInputStream(originalFile);
		out = new CipherOutputStream(new FileOutputStream(encryptedFile), cipher);
		byteBuffer = new byte[1024];
		for (int n;(n = in.read(byteBuffer)) != -1;out.write(byteBuffer, 0, n));
		in.close();
		out.close();
		//new File(originalFile).delete();
	}


public void decryptFile(String encryptedFile, String decryptedFile, String password) throws Exception {
		CipherInputStream in;
		OutputStream out;
		Cipher cipher;
		SecretKey key;
		byte[] byteBuffer;
		cipher = Cipher.getInstance("DES");
		key = new SecretKeySpec(password.getBytes(), "DES");
		cipher.init(Cipher.DECRYPT_MODE, key);
		in = new CipherInputStream(new FileInputStream(encryptedFile), cipher);
		out = new FileOutputStream(decryptedFile);
		byteBuffer = new byte[1024];
		for (int n;(n = in.read(byteBuffer)) != -1;out.write(byteBuffer, 0, n));
		in.close();
		out.close();
		//new File(encryptedFile).delete();
	}

EDIT: Passwort muss 8 Zeichen haben...
 
meez hat gesagt.:
EDIT: Passwort muss 8 Zeichen haben...

Was mach ich eigentlich, wenn das Passwort keine 8 Zeichen lang ist? Beispielsweise 7 oder 15 Zeichen lang? Ich würde mir eigentlich gern ein kleines Tool zur Verschlüsselung mit AES schreiben, nur weiss ich nicht so recht, wie ich mit der Länge des Passworts umgehen soll. Gibt es da Empfehlungen? Abschneiden? Mit Nullen auffüllen? Klingt beides nicht so security-like.
 
suche nach "Password Based Encryption", genau dieser Fall ist im JCE/JCA schon fest eingebaut🙂

Standard ist wohl sowas wie "PBEWithMD5AndDES"
 
Hm. Da ist man dann aber leider auf DES beschränkt und kann nicht auf die anderen Algorithmen (wie halt eben AES) zurückgreifen. Gibt es keinen einigermassen praktikablen Weg, um aus einem Passwort heraus einen Schlüssel zu generieren?
 
bist du sicher dass in der J2SE keine PBE mit AES dabei ist, glaub ich jetzt nicht??

wenn dir das nicht zusagt:

verschlüssele zuerst das Passwort.getBytes("UTF-8") z.B. mit dem Algorithmus "DES/ECB/PKCS5Padding" (analog für AES, Blowfish) dann kriegst du schonmal zumindest ein Vielfaches der Blocklänge, die überflüssigen Blöcke könntest du dann XORen und du hast einen schönen Key

allerdings ist sowas nur für den Privatgebrauch gedacht, die Java PBE verlangt immer einen Zufallsvektor ('Salt') der mitdazugemischt wird
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben