Input/Output Text in Bild verschlüsseln

BoreX

Mitglied
Hey Leute :D ich hab wieder ein Problem ... diesmal mit ner Verschüsselung Text in Bild ... Das Programm schreibt die Datei richtig in das Bild rein aber er Verschlüsselt sie nicht mit einem Code der eingegeben wird ... :(

Java:
 import java.io.*;

import javax.swing.*;

public class BILD{
public static void main(String args[]) throws IOException{
	
JFileChooser open= new JFileChooser();
open.showOpenDialog(null);
File openFile = open.getSelectedFile();
RandomAccessFile rf1 = new RandomAccessFile(openFile,"rw");
rf1.seek(55);
String zeile =rf1.readLine();

int zeichen=0;
String b = JOptionPane.showInputDialog("bitte Text Eingeben");
int code = Integer.parseInt(JOptionPane.showInputDialog("Bitte Chiffriercode eingeben!"));


	zeichen += code;
    b += (char)zeichen;
	


JFileChooser save = new JFileChooser();
save.showSaveDialog(null);
File saveFile =save.getSelectedFile();
RandomAccessFile savePath= new RandomAccessFile(saveFile,"rw");

savePath.seek(55);
savePath.writeBytes(code+".." + b);

rf1.close();


System.out.println(zeile);
}}
 
S

SlaterB

Gast
denken, sortieren, filtern, das wäre eine tolle Kunst wenn man sie beherscht, versuche bitte darauf zu achten,
dein Bild hat offensichtlich mit dem Problem nichts zu tun,
Eingaben von der Konsole sind auch schlecht, zumindest hier im Forum/ für die Testphase

dreimal durch den Sortierungsmixer püriert ergibt sich also folgender Quellcode:
Java:
public class Test
{
    public static void main(String[] args)
    {
        String b = "Hello World";
        int zeichen = 42;
        b += (char)zeichen;
        System.out.println(b);
    }
}
die Ausgabe ist im Moment [c]Hello World*[/c], das Zeichen 'zeichen' wird einfach hinten angehängt,
du willst sicher was anderes (auch wenn du nichts davon erzählst..) z.B. jedes Zeichen des Originalstrings um x verschieben?
 

BoreX

Mitglied
ja richtig. Wir sollen es mit Eingabedialog machen und dann die Buchstaben um x verschieben und die so im Bild verschlüsseln
 
S

SlaterB

Gast
wie du stellst du dir jetzt vor, wie dieser Thread nach deiner Antwort weitergeht?
ist es wirklich nötig, dass ich die obligatorischen Fragen erst eintippen muss? na wenn das der einzige Weg ist ;) :

also, dann mach es doch, verschiebe alle Zeichen,
was hast du dazu für Ideen, was kennst du alles oder ist [c]b += (char)zeichen;[/c] das einzige und es geht nicht weiter?

String aus einzelnen Zeichen aufgebaut? Schleife?
 

BoreX

Mitglied
While-Schleife hab ich versucht, aber danach lässt sich das programm nicht ausführen.. Wie gesagt ich hab die Java-tags von oben als Code geschrieben ... damit lässt sich die Datei öffnen und auch beschreiben (also eine .bmp-Datei) aber der Text der in der Datei versteckt werden soll, wird nicht verschlüsselt, sondern nur so darein geschrieben wie ich es eintippe in den Eingabedialog. Das ganze kann ich dann im Hexeditor nachgucken und da hab ich dann mein Beweis vorliegen, dass der Code nicht verschlüsselt wurde :(
 
S

SlaterB

Gast
bitte bitte nochmal meine erste Antwort lesen,
du fügst lediglich ein Zeichen hinzu, das zu prüfen erfordert ein System.out.println(), den einfachsten Befehl der Welt,
eine Bild-Datei zu beschreiben und später irrsinnig im Hex nachzuschauen ist komplett unnötig (egal ob später Teil der Aufgabe) und 10x so kompliziert

wenn ein Architekt einen Winkel zwischen zwei Hausseiten bestimmen muss, baut er dann drei Monate ein Haus und misst dann nach oder rechnet er diesen Teil schnell mal eben auf Papier nach?
also, das Bild bitte nicht mehr erwähnen bis der String fertig codiert ist, siehe mein Testprogramm,
das zu begreifen wäre wichtiger als alle Java-Befehle der nächsten 4 Wochen...

------

wie sieht denn dein While-Schleifen-Versuch aus (wenn möglich auf mein Testprogramm übertragen ohne den unsinnigen RandomAccessFile-Code)?
 

BoreX

Mitglied
Java:
 int zeichen=0;
String b = JOptionPane.showInputDialog("bitte Text Eingeben");
int code = Integer.parseInt(JOptionPane.showInputDialog("Bitte Chiffriercode eingeben!"));
 
 
    zeichen += code;
    b += (char)zeichen;

Das ist der kritische Teil meines Codes. Wenn man da ne While-Schleife einfügt, rechnet das Pogramm endlos durch, aber macht dabei nichts. b wird ja eingelesen(ist der String, der in die Bilddatei geschrieben werden soll) durch nen InputDialog und dann soll er es codieren(mit
Java:
 int code = Integer.parseInt(JOptionPane.showInputDialog("Bitte Chiffriercode eingeben!"));
und in den text(b) einfügen, dass der sich im ASCII wert um x Zeichen verschiebt. Is schwierig zu erklären, unsere eigentliche Aufgabenstellung ist, dass wir ein Programm entwerfen sollen, dass ein Bild einlesen kann und wir dann per Java einen Text einfügen können und dieser auf mit einem bestimmten Chiffrier-Code verschlüsselt wird.
 
S

SlaterB

Gast
ich seh schon, ich kann dir meine Konzepte nicht beibringen,
du wiederholst weiterhin unsinnigen Code wie Eingabe (welchen Zweck kann es dienen, so etwas (erneut!) zu posten?)
und redest von der Aufgabe mit dem Bild,

damit du nicht nur von mir genervt bist, helfe ich dann hier auch mal konkret:
Java:
public class Test
{
    public static void main(String[] args)
    {
        String b = "Hello World";
        int zeichen = 3;
        System.out.println(b);

        String neu = "";
        for (char c : b.toCharArray())
        {
            neu += (char)(c + zeichen);
        }
        System.out.println(neu);
    }
}
hier wird jedes Zeichen um 3 Positionen verschoben, Ausgabe ist lustigerweise recht lesbar [c]Khoor#Zruog[/c]
je nach Verschiebung kommen auch nicht darstellbare Zeichen raus, wenn du aber wieder HEX nachschaust, dann mag das ja nicht stören..
 

BoreX

Mitglied
Du nervst mich nich ^^ keine sorge ich denke einfach nur das is nen missverständnis hier :/ aber sowas wie die for schleife brauchte ich danke :D ich werd jetz mal versuchen ob das klappt ... wenn nich komm ich wieder.. :D
 

BoreX

Mitglied
mh .. ich hab jetzt versucht den Quellcode zu erweitern bei mir mit der Schleife, hat leider nichts gebracht. Mein Ziel ist es ja einen Text in einem Bild zu speichern und diesen Text vor der Speicherung zu codieren mit einer Chiffrierung die man einlesen soll. So, das Programm was ich gepostet hab nimmt den Text auf und schreibt ihn in das Bild rein. Obwohl er eigentlich den Befehl bekommt diesen zu verschlüsseln, es aber nicht tut. Wenn man das alles Zeile für Zeile durchgeht und es auch nachrechnet komm ich, für meine Kenntnisse, soweit, dass er alles tun müsste was ich verlange, die chiffierung erfolgt jedoch nicht ):
 
S

SlaterB

Gast
jetzt wo das Einzelnproblem der Verschlüsselung mehr oder weniger geklärt ist, ist es durchaus erlaubt, wieder an den großen Kontext mit Bild und sogar Eingabe zu denken,
bisher schreibst du aber nur 'ich baue x ein und x geht nicht mehr',
dazu kann ich natürlich überhaupt nichts sagen außer wieder eine vorhersehbare Antwort: Code posten ;)
 

BoreX

Mitglied
ist nach wie vor der selbe code den ich oben gepostet hab ... wenn du den ma in dein Eclipse (oder was auch immer eingibst) mit der richtigen klasse un es dann laufen lässt öffnet sich eine auswahl .. du wählst ein bild aus gibst deinen Text und dein chiffrier-code ein. Danach sollte er es (eigentlich) als verschlüsselten text (z.B. BAUM[Eingabetext] -> [je nach Chiffriercode] ONHZ [Chiffrier-code: 13] ) in das dann erneut gewählte Bild einspeichern. Er speichert aber lediglich(in dem Fall jetzt) "BAUM" ein, was du dann mit dem Hexeditor überprüfen kannst. Verstehst du was ich meine? q.q
 
S

SlaterB

Gast
im Code ganz oben fehlt ja auch die Verschlüsselung durch die Schleife, ergo ändert sich der Text nicht,
wenn du meinen Code dort eingefügt hast, dann kann das auf falsche Weise geschehen sein,
z.B. ist der String 'neu' korrekt geändert, du speicherst aber immer noch den alten String b,

wie gesagt: Code posten
 

BoreX

Mitglied
So hier mit der Einfügung deiner Schleife von oben ist das jetzt und er speichert es nicht verschlüsselt ab ):

Die beiden sachen unten sind jetzt auskommentiert, weil sie durch die Schleife überflüssig gemacht wurden, aber ich sie nich vergessen will xD

Java:
import java.io.*;
 
import javax.swing.*;
 
public class BILD{
public static void main(String args[]) throws IOException{
    
	
	
	

JFileChooser open= new JFileChooser();
open.showOpenDialog(null);
File openFile = open.getSelectedFile();
RandomAccessFile rf1 = new RandomAccessFile(openFile,"rw");
rf1.seek(55);
String zeile =rf1.readLine();
 
int zeichen=0;
String b = JOptionPane.showInputDialog("bitte Text Eingeben");
int code = Integer.parseInt(JOptionPane.showInputDialog("Bitte Chiffriercode eingeben!"));



String neu = "";
for (char c : b.toCharArray())
{
    neu += (char)(c + zeichen);
}

	
	//zeichen += code;
    //b += (char)code;

	
JFileChooser save = new JFileChooser();
save.showSaveDialog(null);
File saveFile =save.getSelectedFile();
RandomAccessFile savePath= new RandomAccessFile(saveFile,"rw");
 
savePath.seek(55);
savePath.writeBytes(code+".." + b);
 
rf1.close();
 
 
System.out.println(zeile);
}
}
 
S

SlaterB

Gast
ich habe deinen Fehler im letzten Posting schon vorausgesehen und beantwortet?
 
Zuletzt bearbeitet von einem Moderator:

BoreX

Mitglied
Alles kla jetzt hab ichs verstanden vielen dank :D ich hatte falsch gelesen :p bzw das 'neu' falsch interpretiert :D ... jetzt funktioniert alles wunderbar er speichert es richtig ab ;D vielen vielen dank :D
 

Oben