Bin neu hier und hoffe, dass ihr mir bei meinem Problem weiterhelfen könnt.
Und zwar bin ich noch Schüler und möchte mir gerne so ein Art "Verschlüsselungsprogramm" schreiben.
Ich verwende dazu Eclipse mit grafischer Unterstützung.
Funktion:
Datei öffnen - Datei einlesen und in jTextArea schreiben - Inhalt in String einlesen und jeden einzelnen char um 2 erhöhen. zB.: statt 'A' steht dann 'C'.
Dies alles dann zu einem String hinzufügen und in Datei schreiben.
Danach kann man es wieder zurückkonvertieren lassen. Also die chars um -2 erhöhen, sprich 2 verringern.
Bei normalen Textdokumenten funktiniert dass recht gut.
Jedoch funktioniert es bei .doc und .jpg nicht ganz, da er beim "entschlüsseln" ein return statt ursprünlich ein '000' macht.
Könnt Ihr mir vielleicht sagen, was ich berücksichtigen muss, damit das ordentlich funktioniert?
Wäre um jede Hilfe dankbar.
PS: Ich kann euch gerne Projektordner inkl. Quellcode schicken.
vllt bin ich nur mal wieder aufm kopf gefallen aber das verstehe ich nicht und ich glaub, dass der satz für die beantwortung deiner frage von größter bedeutung ist
Also die Funktion des Programms soll sein: Den ASCII Wert jedes einzelnen Buchstaben und Zeichen um 2 zu erhöhen und dann wieder in ein Textdokument zu schreiben.
Bei Textdokumenten funktioniert das auch.
Nur bei anderen Dateien ist dann das Problem: Wenn ich es zuerst um 2 erhöhe, dann speicher und dann um 2 verringere und wieder speichere, kommt es zum Problem, dass er gewisse Zeichen falsch ausgibt (in die Datei schreibt).
Und genau da ist mein Problem: er schreibt zum Beispiel statt einem '-' ein '?' (im Fall eines .jpg). Obwohl es bei einem .txt wieder in einen '-' zurückgewandelt wird.
Habs jetzt auch umgeschrieben, dass ich sie byteweise einlese, also den char von jedem einzelnen Zeichen und dann sofort im Filereader noch in einem .txt anhänge.
Jetzt bräuchte ich nur noch einen Befehl, damit ich eine Art "Sicherungskopie" der Datei anlegen kann, und die ich danach wieder löschen kann.
also wie gesagt ich hab das grad getestest. ein einfaches bild charweiße eingelesen und sofort wieder in eine txt geschrieben. bei mir kam dabei garnix raus..
Da kann nix gutes dabei raus kommen
Erstens ist ein Cast von byte auf char nicht so einfach und zweitens kannst du Überläufe bekommen. Ein char ist zwei Byte groß, ein byte (dem Namen nach ;-) ) ein Byte.
Mein Rat: lass das mit der Konvertierung, rechne nur mit bytes und vergiss mögliche Überläufe nicht. Der Wertebereich eines byte ist übrigens -128 bis 127, also aufpassen wenn du 126+2 bzw. -127-2 rechnen willst.
EDIT: desweiteren solltest du auch einen Bogen um *Reader und *Writer machen und nur Streams verwenden.
Also ich hab das mal mit java.io.DataInputStream#readByte() gemacht und hab dann das byte XOR (^-Operator) mit nem anderen byte (Passwort) verknüpft, und das dann mit java.io.DataOutputStream#writeByte() wieder in ne datei reingeschrieben.