Hallo allerseits,
eine Datei (z.B. exe-Datei) soll dadurch kodiert werden, dass jedes Byte um eins erhöht wird, also z.B:
0 --> 1
1 --> 2
254 --> 255
255 --> 0
Dann soll die gesamte Datei wieder dekodiert werden (jedes byte wird um 1 verringert) , also:
0 --> 255
1 --> 0
255 --> 254
In einem Hexeditor hatte ich folgende 8 Bytes (Anfang einer exe-datei):
4 0 0 0 FF FF 0 0
Aus diesen wurden dann beim Kodieren richtigerweise:
5 1 1 1 0 0 1 1
Aber beim Dekodieren wurden daraus:
4 0 0 0 FF 0 1 1
Die letzten 3 Bytes sind also falsch.
Warum macht mein Programm diesen Fehler?
mfg
Ernst
Hier mein Programm:
eine Datei (z.B. exe-Datei) soll dadurch kodiert werden, dass jedes Byte um eins erhöht wird, also z.B:
0 --> 1
1 --> 2
254 --> 255
255 --> 0
Dann soll die gesamte Datei wieder dekodiert werden (jedes byte wird um 1 verringert) , also:
0 --> 255
1 --> 0
255 --> 254
In einem Hexeditor hatte ich folgende 8 Bytes (Anfang einer exe-datei):
4 0 0 0 FF FF 0 0
Aus diesen wurden dann beim Kodieren richtigerweise:
5 1 1 1 0 0 1 1
Aber beim Dekodieren wurden daraus:
4 0 0 0 FF 0 1 1
Die letzten 3 Bytes sind also falsch.
Warum macht mein Programm diesen Fehler?
mfg
Ernst
Hier mein Programm:
Code:
import java.io.*;
public class MainDateiKodieren1 {
public static void main(String[] args) {
// Aus Datei lesen
File f = new File("C:\\schrott.exe");
int zeichen = 0;
if(f.isFile()==true){
System.out.println("Dies ist eine Datei");
}
else{
System.out.println("Dies ist eine Datei");
}
// Wahlfreier Zugriff Kodieren
RandomAccessFile myraDatei1 = null;
long index = 0;
try{
myraDatei1 = new RandomAccessFile(f, "rw");
myraDatei1.seek(0);
do{
zeichen = myraDatei1.read();
index = myraDatei1.getFilePointer();
index = index - 1;
if(zeichen != -1){
zeichen=zeichen+1;
myraDatei1.seek(index);
myraDatei1.write(zeichen);
}
} while(zeichen!=-1);
}
catch(FileNotFoundException e){
System.out.println("Datei nicht gefunden"+e.toString());
}
catch(IOException e){
System.out.println("Lesefehler"+e.toString());
}
// Wahlfreier Zugriff Dekodieren
try{
myraDatei1.seek(0);
do{
zeichen = myraDatei1.read();
index = myraDatei1.getFilePointer();
index = index - 1;
if(zeichen != -1){
zeichen = zeichen-1;
myraDatei1.seek(index);
myraDatei1.write(zeichen);
}
} while(zeichen!=-1);
myraDatei1.close();
}
catch(FileNotFoundException e){
System.out.println("Datei nicht gefunden"+e.toString());
}
catch(IOException e){
System.out.println("Lesefehler"+e.toString());
}
}
}