Datei öffnen, bearbeiten, speichern
lima-city → Forum → Programmiersprachen → Java
auslese
blocken
byte
code
datei
datum
file
film
fis
forum
frage
fragezeichen
geschriebener algorithmus
kleine dateien
konvertieren
simulation
speichern
stellen
string
verarbeiten
-
Hallo liebes Lima-City Forum,
ich bin gerade dabei in Java eine Verschlüsselungssoftware zu schreiben. Soweit funktioniert auch alles, die Verschlüsselung klappt, mein selbst geschriebener Algorithmus ist sogar schneller als der fertige von Java, allerdings bekomm ich es einfach nicht hin eine Datei zu öffnen, sie zu verschlüsseln, sie zu speichern, dann wieder zu öffnen, zu entschlüsseln und sie dann zu öffnen.
Verschlüssle und Entschlüssle ich eine *.jpg Datei, dann gibt es Formatierungsfehler in der Bild-Datei, wenn ich sie mir in Notepad++ angucke, dann gibt es an manchen Stellen „?“ (Fragezeichen), die es in der Originaldatei nicht gibt. Warum ist das so? Wenn ich eine *.txt Datei verschlüssle und wieder entschlüssle wird sie korrekt dargestellt. Zur besseren Übersicht konvertiere ich meine verschlüsselte Datei in Base64 und natürlich später auch wieder zurück.
//Konvertieren in BASE64-String String encryptedString = Base64.getEncoder().encodeToString(encrypted);
//BASE64-String Konvertieren in Byte-Array byte[] decoded = Base64.getDecoder().decode(text);
<-- Datei öffnen und verschlüsseln//Datei auswählen File datei = new File(speicherort); //Datei auslesen FileInputStream fis = new FileInputStream(datei); byte[] encodedKey = new byte[(int) datei.length()]; fis.read(encodedKey); fis.close(); String data = new String(encodedKey); String decodedData = aesVerschluesseln(data, key);
<-- Datei entschlüsseln und speichern//Datei auswählen File datei = new File(speicherort); //Datei auslesen FileInputStream fis = new FileInputStream(datei); byte[] encodedData = new byte[(int) datei.length()]; fis.read(encodedData); fis.close(); String data = new String(encodedData); String entschluesselt = aesEntschluesseln(data, key);
Was mache ich falsch. Ich arbeite sonst normalerweise in Java nicht mit Dateien, sondern schreibe eher Simulationen oder Verschlüsselungen die nur theoretisch Zeichenketten verschlüsseln, aber nicht praktisch direkt eine Datei verschlüsseln.
Und noch eine Frage, ist es ratsam Dateien so zu öffnen und zu speichern wie ich das jetzt gerade tue, den ich will den Arbeitsspeicher nicht als Maß für die maximale Dateigröße nehmen die verschlüsselt werden kann. Denn ich will bspw. auf einem Rechner mit 2GB RAM auch Filme die 6GB groß sind verschlüsseln können. Von der dafür notwendigen Zeit mal ganz abgesehen.
Vielen Dank für eure Hilfen :)
cpk2011
Beitrag zuletzt geändert: 21.7.2015 19:18:26 von computerkurs2011 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
1) Du liest Bytes, aber machst einen String daraus. Dabei findet ein Encoding/Decoding statt, und dabei kann es bei Binärdaten zu Fehlern kommen. Lösung: verarbeite immer
-Daten anstattbyte[]
s.String
2) Man liest nur kleine Dateien vollständig ein. Ansonsten verarbeitet man Dateien blockweise: 1 Block (z.B. 512 Bytes) lesen, verarbeiten, schreiben. Und dann der nächste Block usw … -
Vielen Dank, es hat alles super geklappt
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage