HerbertXXL
Mitglied
Du machst es dir immer noch zu kompliziert
Hab leider keine Zeit dein Beispiel abzuändern, habe aber kurz ein auf das nötigste beschränkte Programm gebastelt ich hoffe das hilft dir weiter.
Wer sich über Ähnlichkeiten wundert, es basiert auf dem Dateien kopieren Beispiel aus der Javainsel
P.S. Habe gerade noch ein Blick auf Toms Beispiel geworfen, der macht es im Grunde genauso wie ich, nur viel eleganter
Was Du nachwievor verkehrt machst, ist dass Du die eingelesene Datei in Strings umwandelst, was bei binären Daten Probleme bereitet:
diese Zeile ist unnötig:
bytesOfBlock = String.valueOf(block).getBytes("UTF-8");
Hab leider keine Zeit dein Beispiel abzuändern, habe aber kurz ein auf das nötigste beschränkte Programm gebastelt ich hoffe das hilft dir weiter.
Wer sich über Ähnlichkeiten wundert, es basiert auf dem Dateien kopieren Beispiel aus der Javainsel
Java:
public class Crypt {
public static void cryptFile(String file, String password) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(file);
fos = new FileOutputStream(file + ".crypt");
crypt(fis, fos, new Password(password.getBytes()));
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
}
}
}
}
private static void crypt(InputStream in, OutputStream out, Password password) throws IOException {
byte[] buffer = new byte[0xFFFF];
for (int len; (len = in.read(buffer)) != -1;) {
for (int i = 0; i < len; i++) {
buffer[i] ^= password.nextByte();
}
out.write(buffer, 0, len);
}
}
}
Java:
public class Password {
byte[]value;
int pointer;
public Password(byte[] value) {
this.value = value;
pointer=0;
}
public byte nextByte(){
byte ret;
if(pointer<value.length){
ret= value[pointer];
pointer++;
}
else{
pointer=0;
ret= value[pointer];
pointer++;
}
return ret;
}
}
P.S. Habe gerade noch ein Blick auf Toms Beispiel geworfen, der macht es im Grunde genauso wie ich, nur viel eleganter
Was Du nachwievor verkehrt machst, ist dass Du die eingelesene Datei in Strings umwandelst, was bei binären Daten Probleme bereitet:
diese Zeile ist unnötig:
bytesOfBlock = String.valueOf(block).getBytes("UTF-8");
Zuletzt bearbeitet: