Netzsteckdose
Grünschnabel
Hallo zusammen,
ich moechte einen String verschluesseln und aus meinen Programm in eine Datei speichern und andermal wieder laden und entschluesseln. Ich kann Strings verschluesseln und endschluesseln und Strings speichern und laden, jedoch nicht die Kombination daraus, da macht es irgendwelchen Mist und ich weiss nicht warum. Bei der Verschluesselung wird jeder Buchstabe um einen bestimmten Betrag verschoben. Ich glaube wenn dieser gross genug wird,so dass das Zeichen ueber 255 hinaus geht gibts mit Datei lesen/schreiben fehler und ohne nicht (hab natuerlich mod 256 gemacht).
so les ich die Datei ein:
so schreib ich sie
verschluesselung (*V* ist verschiebung) , entschluesselnung ist analog nur halt andere Richtung
wenn also zB V=1 wird aus 12345 -> 13579
wenn ich nun:
mache, erhalte ich als gelesenen entschluesselten Text:
Dies ist ein Te0/-Te+*
mit Djgv$ny{(nsy,as>fx als Verschluesselung
mit
jedoch
Dies ist ein Test-Text
mit Djgv$ny{(nsy,as>fx als Verschluesselung
meine Frage ist nun ob er die Zeichen nicht richtig einlesen kann oder ob ich irgendow einen Fehler gemacht habe, hoffe mir kann jm helfen
---------------soo nachdem ich diesen ewig langen Text geschrieben habe is mir aufgefallen, dass das mit dem % 256 nicht stimmt, bei -V muss es
sein
nun stellts sich mir aber die Frage warum denn dass vorher mit den Strings ging und nacher immer noch nicht mit write und read
falls jm testen will:
ich moechte einen String verschluesseln und aus meinen Programm in eine Datei speichern und andermal wieder laden und entschluesseln. Ich kann Strings verschluesseln und endschluesseln und Strings speichern und laden, jedoch nicht die Kombination daraus, da macht es irgendwelchen Mist und ich weiss nicht warum. Bei der Verschluesselung wird jeder Buchstabe um einen bestimmten Betrag verschoben. Ich glaube wenn dieser gross genug wird,so dass das Zeichen ueber 255 hinaus geht gibts mit Datei lesen/schreiben fehler und ohne nicht (hab natuerlich mod 256 gemacht).
so les ich die Datei ein:
Code:
FileReader fr = new FileReader(file);
int size = (int) file.length();
char[] buffer = new char[size];
fr.read(buffer, 0, size);
fr.close();
String text = encode(new String(buffer));
so schreib ich sie
Code:
FileWriter fw = new FileWriter(file);
fw.write(decode(text));
fw.close();
verschluesselung (*V* ist verschiebung) , entschluesselnung ist analog nur halt andere Richtung
Code:
for (int i = 0; i + 1 < len; i++) {
for (int j = i + 1; j < len; j++) {
ich=(int)(test.charAt(j));
char ch=(char) (( ich+*V*) % 256);
test = test.substring(0, j)+ ch + test.substring(j + 1, len);
}
}
wenn ich nun:
Code:
text="Dies ist ein Test-Text";
write();
read();
Dies ist ein Te0/-Te+*
mit Djgv$ny{(nsy,as>fx als Verschluesselung
mit
Code:
text="Dies ist ein Test-Text";
decode();
encode();
Dies ist ein Test-Text
mit Djgv$ny{(nsy,as>fx als Verschluesselung
meine Frage ist nun ob er die Zeichen nicht richtig einlesen kann oder ob ich irgendow einen Fehler gemacht habe, hoffe mir kann jm helfen
---------------soo nachdem ich diesen ewig langen Text geschrieben habe is mir aufgefallen, dass das mit dem % 256 nicht stimmt, bei -V muss es
Code:
char ch=(char) ((256+ ( ich-V) % 256)%256);
nun stellts sich mir aber die Frage warum denn dass vorher mit den Strings ging und nacher immer noch nicht mit write und read

falls jm testen will:
Code:
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class deencoder {
public int len, off;
public static void main(String[] args) {
deencoder deenc = new deencoder();
//so gehts nicht
deenc.write();
deenc.read();
/*/so aber/*/
// String text="Dies ist ein Test-Text";
// text=deenc.decode(text);
// System.out.println(text);
// text=deenc.encode(text);
// System.out.println(text);
}
public void read() {
String test = "";
File file = new File("data");
try {
FileReader fr = new FileReader(file);
int size = (int) file.length();
char[] buffer = new char[size];
fr.read(buffer, 0, size);
fr.close();
test = new String(buffer);
} catch (Exception e) {
System.out.println("Fehler beim lesen");
}
test = encode(test);
System.out.println(test);
}
public void write() {
String test = "Dies ist ein Test-Text";
File file = new File("data");
try {
test = decode(test);
System.out.println(test);
FileWriter fw = new FileWriter(file);
fw.write(test);
fw.close();
} catch (Exception e) {
System.out
.println("Fehler beim schreiben");
}
}
public String encode(String test) {
int len = test.length();
for (int i = len - 1; i + 1 > 0; i--) {
for (int j = len - 1; j > i; j--) {
int ich = (int) (test.charAt(j));
char ch = (char) ((256 + (ich - 1) % 256) % 256);
test = test.substring(0, j) + ch + test.substring(j + 1, len);
}
}
return test;
}
public String decode(String test) {
int len = test.length();
for (int i = 0; i + 1 < len; i++) {
for (int j = i + 1; j < len; j++) {
int ich = (int) (test.charAt(j));
char ch = (char) ((ich + 1) % 256);
test = test.substring(0, j) + ch + test.substring(j + 1, len);
}
}
return test;
}
}
Zuletzt bearbeitet: