none
Inhalt einer Datei einfach "verschlüsseln"

    Frage

  • Hallo

    Ich wollte eine RTF Datei so öffnen, das ihr gesamter Inhalt dargstellt wird (im Klartext). Das habe ich mit

    RichTextBox2.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText)

    gelöst. Diesen Text würde ich jetzt so verschlüsseln, das er jedes Zeichen um 2 Werte in der Ascii Tabelle verschiebt, so das aus a=c oder aus c=e wird. Das ganze soll dann in RichTextbox3 dargestellt werden.

    Wie bekomme ich das hin, und ist das überhaupt Möglich?Und wie kann ich so einen "Verschlüsselten" Text wieder zurück gewinnen?

    Über eure Hilfe würde ich mich freuen.

    MFG

    Scriptos

    Montag, 4. Februar 2013 16:49

Antworten

  • Entschuldige, das war C#, hier der VB.NET Code dazu:
    Dim s As String = File.ReadAllText(OpenFileDialog1.FileName)
    Dim c As Char() = s.ToCharArray()
    'Array der einzelnen Zeichen
    For i As Integer = 0 To c.Length - 1
    	'Alle Zeichen durchgehen
                c(i) = ChrW(If(AscW(c(i)) + 2 > 65535, AscW(c(i)) + 2 - 65535, AscW(c(i)) + 2))Next'Um 2 verschieben, Werte gehen von 0 bis 65536 (=2^16-1)richTextBox.Text = New String(c)'Ausgabe in RTB
    Und der umgekehrte Weg:
    For i As Integer = 0 To c.Length - 1
    	'Alle Zeichen durchgehen
                c(i) = ChrW(If(AscW(c(i)) - 2 < 0, AscW(c(i)) - 2 + 65535, AscW(c(i)) - 2))
    Next


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    • Als Antwort markiert Scriptos Montag, 4. Februar 2013 17:54
    Montag, 4. Februar 2013 17:25

Alle Antworten

  • Hallo,

    Als erstes würde ich den Text in eine string-Variable laden. Anschließend jedes Zeichen durchgehen und entsprechend verschieben:

                string s = File.ReadAllText(OpenFileDialog1.FileName);
                char[] c = s.ToCharArray(); //Array der einzelnen Zeichen
                for (int i = 0; i < c.Length; ++i) //Alle Zeichen durchgehen
                    c[i] = (char)(c[i] + 2 > 65535 ? c[i] + 2 - 65535 : c[i] + 2); //Um 2 verschieben, Werte gehen von 0 bis 65536 (=2^16-1)
                richTextBox.Text = new string(c); //Ausgabe in RTB

    Anschließend noch die Ausgabe in der RTB.

    Für das "zurück gewinnen" musst du nur die Schleife etwas abändern:

                for (int i = 0; i < c.Length; ++i) //Alle Zeichen durchgehen
                    c[i] = (char)(c[i] - 2 < 0 ? c[i] - 2 + 65535 : c[i] - 2);

    Die Methode File.ReadAllBytes habe ich nicht genutzt, damit auch Unicodezeichen richtig kodiert werden.


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    Montag, 4. Februar 2013 17:08
  • mhm, bei mir will der Code nicht laufen.

    Außerdem sieht mir das nicht nach VB aus :)

    Montag, 4. Februar 2013 17:16
  • Entschuldige, das war C#, hier der VB.NET Code dazu:
    Dim s As String = File.ReadAllText(OpenFileDialog1.FileName)
    Dim c As Char() = s.ToCharArray()
    'Array der einzelnen Zeichen
    For i As Integer = 0 To c.Length - 1
    	'Alle Zeichen durchgehen
                c(i) = ChrW(If(AscW(c(i)) + 2 > 65535, AscW(c(i)) + 2 - 65535, AscW(c(i)) + 2))Next'Um 2 verschieben, Werte gehen von 0 bis 65536 (=2^16-1)richTextBox.Text = New String(c)'Ausgabe in RTB
    Und der umgekehrte Weg:
    For i As Integer = 0 To c.Length - 1
    	'Alle Zeichen durchgehen
                c(i) = ChrW(If(AscW(c(i)) - 2 < 0, AscW(c(i)) - 2 + 65535, AscW(c(i)) - 2))
    Next


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    • Als Antwort markiert Scriptos Montag, 4. Februar 2013 17:54
    Montag, 4. Februar 2013 17:25
  • Komisch.

    Wenn ich den text aus ner Richtetxbox auslesen will, dann kommt nur ne Fehlermeldung ^^

    Dim s As String = File.ReadAllText(RichTextBox2.Text)

    was habe ich falsch gemacht?

    MFG

    Scriptos

    PS: Fehlermeldung wie folgt:

    "

    Eine nicht behandelte Ausnahme des Typs "System.ArgumentException" ist in mscorlib.dll aufgetreten.
    
    Zusätzliche Informationen: Illegales Zeichen im Pfad.

    "

    Montag, 4. Februar 2013 17:31
  • Ich bin davon ausgegangen, das du den Text aus der Datei haben wills, den liest File.ReadAllText aus. Wenn du den Text aus der RTB haben möchtest, dann muss die Zeile so lauten:
    Dim s As String = RichTextBox2.Text
    Wobei man sich das in diesem Fall auch sparen könnte und sofort mit RichTextBox2.Text anstelle von s arbeiten kann.

    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    Montag, 4. Februar 2013 17:37
  • ah okay, danke dir, hat alles geklappt :)
    Montag, 4. Februar 2013 17:53