Datei beim schreiben verschlüsseln beim lesen entschlüsseln

Status
Nicht offen für weitere Antworten.

TheTobi

Aktives Mitglied
Hi,
Ich habe ein Properties Objekt, dieses fülle ich und würde es gerne danach in eine Datei schreiben. Nur schreibe ich in dieses Properties Objekt auch ein Passwort rein, was man mit nem einfachen Texteditor aus der geschriebenen datei auslesen könnte.

Gibt es eine Lösung wie ich etwas verschlüsselt in eine Datei schreibe und beim lesen entschlüssel kann?


Habe nach dem schreiben der datei keine möglichkeit wie bei einem Login einen Passwörter abgleich zu machen.
 
mal wieder super antworten. In der Docu hab ich schon gesucht, aber nicht das richtige gefunden, gerade deshalb frag ich ja nach ob jemand weiss wie man das bewerkstelligen kann und mit TEA kann ich auch nicht viel anfangen, bringt mir genauso viel wie wenn jemand MD5,SHA-1,blowfish bla blubb hinschreibt
 
Und wieso kannst du damit nichts anfangen? TEA ist genau das, was du suchst. Zumindest das, was du sagtest, das du suchst. Welche Bedingung erfüllen denn TEA, blowfish usw nicht, die du haben möchtest?
 
Naja welche Klassen kann ich denn benutzen, hab in der Java Docu keine gefunden die mit TAE Arbeitet. Ich will ja nicht alles vorgekaut haben, aber wenn man mir sagt welche Klassen und methoden ich benutzen könnte wäre mir schon geholfen...
 
wenns da keine klassen gibt die das nutzen, wo wäre das problem anhand der referenzimplementierung den code in java zu schreiben ???:L viel is ja nich :bahnhof:
 
Hey also ich habe mir mal eine Klasse geschieben um AES zu verschlüsseln. Die Klasse ermöglicht es auf byte-Ebene oder Direckt Strings. Ich habe das genutzt um eine Chat zu verschlüsseln, vieleicht hilft es. man muss einfach nur eine Password angeben!Scahu dir die Main-Methode an^^

Also AEScrypter.java :
Java:
package Crypter;

import java.security.MessageDigest;
import java.security.spec.AlgorithmParameterSpec;
import java.util.Arrays;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;

public class AEScrypter {

	Cipher ecipher;
	Cipher dcipher;

	byte[] iv = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
			0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f };

	
	public AEScrypter(String password) {
		try {

			BASE64Decoder b64 = new BASE64Decoder();
			byte[] cipherText = b64.decodeBuffer(password);
			MessageDigest messagedigest = MessageDigest.getInstance("MD5");
			messagedigest.reset();
			messagedigest.update(cipherText);
			Arrays.fill(cipherText, (byte) 0);

			SecretKeySpec skeySpec = new SecretKeySpec(messagedigest.digest(),"AES");
			
			AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv);

			ecipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
			dcipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

			ecipher.init(Cipher.ENCRYPT_MODE, skeySpec, paramSpec);
			dcipher.init(Cipher.DECRYPT_MODE, skeySpec, paramSpec);
		} catch (Exception e) {
			System.err.println(e);
		}
	}

	public String StringToAES(String str){
		try {
			byte[] utf8 = str.getBytes("UTF8");
			byte[] enc = ecipher.doFinal(utf8);
			str = new sun.misc.BASE64Encoder().encode(enc);
			str = str.replace("\n", "");
			str = str.replace("\r", "");
		} catch (Exception e) {
			System.err.println(e);
		}
		return str;		
	}
	
	public byte[] encrypt(byte[] bytes) {
		byte[] enc = null;
		try {			
			enc = ecipher.doFinal(bytes);		
		} catch (Exception e) {
			System.err.println(e);
		}
		return enc;
	}
	
	public byte[] decrypt(byte[] bytes) {
		byte[] dec = null;
		try {			
			dec = dcipher.doFinal(bytes);			
		} catch (Exception e) {
			System.err.println(e);
		}
		return dec;
	}

	public String AEStoString(String str) {
		try {
			byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);
			byte[] utf8 = dcipher.doFinal(dec);
			return new String(utf8, "UTF8");
		} catch (Exception e) {
			System.err.println(e);
		}
		return str;
	}

	/*
	public static void main(String[] args) {
		AEScrypter aesCrypter = new AEScrypter("myPassword");
		
		String str = "dayaftereh";
		str = aesCrypter.StringToAES(str);
		System.out.println("en: "+str);
		System.out.println("de: "+aesCrypter.AEStoString(str));
		
	}
	*/
	

}
 
Zuletzt bearbeitet:
Hey ich habe auch noch die DES verschlüsselung. Wenn du interessiert bist, kann ich die auch Morgen Posten^^ Ist nur nicht so siecher wie AES.

viel Spaß
 
das Passwort übrigens nicht im Quellcode speichern, sonst kann man es einfach auslesen. Das muss sich dann schon der Benutzer merken.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben