studi: Verschlüsselung

Hallo,

ich bin kein Mathegenie und hatte auch nie etwas mit Verschlüsselung zutun... doch das Thema fasziniert mich sehr.

Eine einfache Verschlüsselung, wie setzt man sowas um?

Ich hatte mir gedacht ein Array mit 26 Elementen zu erstellen.. von A bis Z
Der Index des Arrays wäre dann ja 0 - 25 ....

Nun soll z.B. das Wort "Hallo" zerflückt werden... Buchstabe für Buchstabe..
H wäre dann ja das 7 Element im Array... nun soll aber der Buchstabe getauscht werden genau einen weniger also ArrayIndex -1 wäre dann ja der Buchstabe G mit dem Index 6 (-1). Das soll so weitergehen bis das komplette Wort "verschlüsselt" wurde.

Doch nun kommt schon das erste Problem... spätestens beim A wird einen Fehler geben da der Index im Array von A = 0 ist... 0-1 wird einen Fehler ausgeben...

Also kann ich das ganz Project knicken...

So, jetzt seht ihr wie doof ich bin und wie ich Denke...
Daher meine Frage, wie kann ein Vollpfosten wie ich mit dem Thema richtig anfangen?

  1. Hi,

    Doch nun kommt schon das erste Problem... spätestens beim A wird einen Fehler geben da der Index im Array von A = 0 ist... 0-1 wird einen Fehler ausgeben...

    Also kann ich das ganz Project knicken...

    Oder auf den negativen Wert -1 einfach mal die 26 draufaddieren, um damit wieder bei 25, also beim Z zu landen.

    Daher meine Frage, wie kann ein Vollpfosten wie ich mit dem Thema richtig anfangen?

    Da bin ich auch überfragt.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. hi studi

    naja das a wäre dann das letzte element zur verschlüsselung
    du könntest natürlich in deinem Array auch gleich den wert angeben, beispielseweise:

    array("A" => "Z","B" => "A", "C" => "B")

    dadurch brauchst du nicht schauen was ist in dem element davor

    aber:
    ich weiß nicht ob man das als "verschlüsselung" ansich ansieht, da es ja quasi keinen schlüssel gibt, aber ich bin da nicht der experte, aber ich denk das heißt bei deiner version anders

    weiterhin hast du natürlich schwer zu tun eine tabelle zu erstellen in der enstprechend alle zeichen vertreten sind, groß sowie kleinschreibung und sonderzeichen etc
    einfacher wäre wohl den ascii oder ansi wert des jeweiligen zeichens zu nehmen, den zu ändern und das neue zeichen zu nehmen

    aber2:
    warum nutzt du nicht eine fertige "integrierte" verschlüsselung? meines wissens nach können die meisten programmiersprachen verschlüsseln bzw. haben entsprechende funktionen

    aber3:
    dein schema würde auf ein relativ einfaches verfahren hinauslaufen, dass keinen "variablen" schlüssel hat, sprich alles was verschlüsselt wird wird immer mit in dem selben verfahrne verschlüsselt, knackt man eins hat man alle

    was willst du eigendlich machen und vor allem in welcher sprache?

    1. @@SorgenkindMech:

      nuqneH

      du könntest natürlich in deinem Array auch gleich den wert angeben, beispielseweise:
      array("A" => "Z","B" => "A", "C" => "B")

      Ziemlich aufwendig.

      ich weiß nicht ob man das als "verschlüsselung" ansich ansieht

      Wikipedia führt ROT13 als solche an.

      Qapla'

      --
      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
      1. hallo,

        Wikipedia führt ROT13 als solche an.

        allgemeiner gesagt wäre das die Caesar-Verschlüsselung oder Verschiebechiffre.

        grüße,
        henman

        --
        "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
        1. @@henman:

          nuqneH

          allgemeiner gesagt wäre das die Caesar-Verschlüsselung oder Verschiebechiffre.

          Nicht allgemeiner, sondern spezieller. Verschlüsselung ist der Oberbegriff.

          Qapla'

          --
          Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
          1. hallo,

            allgemeiner gesagt wäre das die Caesar-Verschlüsselung oder Verschiebechiffre.

            Nicht allgemeiner, sondern spezieller. Verschlüsselung ist der Oberbegriff.

            ROT 13 ist ein Sonderfall der Caesar-Verschlüsselung, darum allgemeiner.

            grüße,
            henman

            --
            "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
      2. @@SorgenkindMech:

        nuqneH

        du könntest natürlich in deinem Array auch gleich den wert angeben, beispielseweise:
        array("A" => "Z","B" => "A", "C" => "B")

        Ziemlich aufwendig.

        ja das ist richtig, ich wollte damit ein if<0 dann nimm was anderes vermeiden

        ich weiß nicht ob man das als "verschlüsselung" ansich ansieht

        Wikipedia führt ROT13 als solche an.

        oha, hätt ich wirklich nicht gedacht, danke ;)

        Qapla'

        grüße - der mech

    2. Hey,

      eigentlich will ich damit nichts Sichern oder so, es geht mir einfach nur um die Denkweise um Verschlüsselungen zu erstellen.....

      Meine derzeitige Programmiersprache ist "AutoIt"

  3. Ich hatte mir gedacht ein Array mit 26 Elementen zu erstellen.. von A bis Z

    Ich würde eher an Bytes denken (Zahlen zwischen 0 und 255)

    Input  XOR Key = Output
    Output XOR Key = Input

    Den Key darfst du aus einem Passwort generieren  über die wildesten Funktionen. Repetitive Muster sind verpönt.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. @@Beat:

      nuqneH

      Ich würde eher an Bytes denken (Zahlen zwischen 0 und 255)

      Zwischen 32 und 254, wenn du an Windows-1252 o.ä. denkst.

      Ich würde bei Zeichen nicht an 8 Bit pro Zeichen denken. 16 Bit sollten es schon sein (wenn einem die Zeichen der BMP U+0020 bis U+FFEE denn reichen).

      Qapla'

      --
      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
      1. Hallo,

        Ich würde eher an Bytes denken (Zahlen zwischen 0 und 255)
        Zwischen 32 und 254, wenn du an Windows-1252 o.ä. denkst.

        was hast du gegen 0xFF? Und was hast du gegen Steuerzeichen, also Codes <0x20?
        Ich würde die nicht ausschließen, sondern ganz normal in die Verschlüsselung einbeziehen.

        Ich würde bei Zeichen nicht an 8 Bit pro Zeichen denken.

        Ich würde nicht an Zeichen denken, sondern an die Bytes, durch die sie repräsentiert werden. Dann ist die Zeichencodierung nämlich egal. Wichtig ist nur, dass ein Datenstrom von Bytes (0..0xFF) in einen anderen Strom von Bytes umcodiert wird, und dass diese Umwandlung eindeutig umkehrbar ist.

        Ciao,
         Martin

        --
        Man gewöhnt sich an allem, sogar am Dativ.
        1. @@Der Martin:

          nuqneH

          was hast du gegen 0xFF?

          Dasselbe wie gegen U+0000 bis U+001F.

          Und was hast du gegen Steuerzeichen, also Codes <0x20?
          Ich würde die nicht ausschließen, sondern ganz normal in die Verschlüsselung einbeziehen.

          Ich würde mich auf darstellbare Zeichen beschränken. Ich seh dich schon verzeifelt nach einem Hardwarefehler suchen, nur weil ein Verschlüsselungsalgorithmus haufenweise U+0007 ausgibt.

          Ich würde nicht an Zeichen denken, sondern an die Bytes, durch die sie repräsentiert werden. Dann ist die Zeichencodierung nämlich egal.

          ?? Die Zeichencodierung ist doch genau das Bindeglied zwischen beidem.

          Qapla'

          --
          Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
          1. Hallo,

            Und was hast du gegen Steuerzeichen, also Codes <0x20?
            Ich würde die nicht ausschließen, sondern ganz normal in die Verschlüsselung einbeziehen.
            Ich würde mich auf darstellbare Zeichen beschränken. Ich seh dich schon verzeifelt nach einem Hardwarefehler suchen, nur weil ein Verschlüsselungsalgorithmus haufenweise U+0007 ausgibt.

            Was ist an Ctrl-G so besonderes? Es ist ein Steuerzeichen wie jedes andere auch. Außerdem: Einen verschlüsselten Text würde ich im Normalfall nicht ausgeben (jedenfalls nicht auf Konsole/GUI/Drucker o.ä.), weil ich ja von vornherein weiß, dass nichts Lesbares dabei rauskommt.
            Wenn einer das aus Unwissenheit tut ... selber schuld.

            Ich würde nicht an Zeichen denken, sondern an die Bytes, durch die sie repräsentiert werden. Dann ist die Zeichencodierung nämlich egal.
            ?? Die Zeichencodierung ist doch genau das Bindeglied zwischen beidem.

            Eben. Und wenn ich nur auf Byte-Ebene arbeite, kann mir egal sein, wie eine Applikation sie interpretiert. Ich habe also eine Sorge weniger, indem ich mich von der darüberliegenden Abstraktionsstufe abkapsle.

            Ciao,
             Martin

            --
            Politik ist die Kunst, die Menschen so zu bescheißen, dass sie auch noch glauben, sie hätten das selbst so gewollt.
            1. Außerdem: Einen verschlüsselten Text würde ich im Normalfall nicht ausgeben (jedenfalls nicht auf Konsole/GUI/Drucker o.ä.), weil ich ja von vornherein weiß, dass nichts Lesbares dabei rauskommt.
              Wenn einer das aus Unwissenheit tut ... selber schuld.

              Du kannst verschlüsselte Daten immer noch nach Base_64 konvertieren. Das macht sie dann auch gleich transportierbar.

              mfg Beat

              --
              ><o(((°>           ><o(((°>
                 <°)))o><                     ><o(((°>o
              Der Valigator leibt diese Fische
      2. Ich würde eher an Bytes denken (Zahlen zwischen 0 und 255)

        Zwischen 32 und 254, wenn du an Windows-1252 o.ä. denkst.

        Dann bist du auf dem falschen Dampfer.
        Der Input einer Verschlüsselung ist als Binärdata anzusehen.
        Du kannst gut und gerne Metadate mit hinein verpacken in den Container. Zum Beispiel originale Länge, Datentyp, Zeichenencoding etc.
        Aber wer eine Verschlüsselung für anderes als Binärdaten konzipiert, fängt am falschen Ende an.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. @@Beat:

          nuqneH

          Zwischen 32 und 254, wenn du an Windows-1252 o.ä. denkst.
          Dann bist du auf dem falschen Dampfer.

          Wirklich?

          Der Input einer Verschlüsselung ist als Binärdata anzusehen.

          Klar.

          Ich wollte damit nur darauf hinaus, dass 0 bis 31 und 255 womöglich nicht als Input vorkommen.

          128 bis 159 eventuell.

          Qapla'

          --
          Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
          1. @@Gunnar Bittersmann:

            nuqneH

            Ich wollte damit nur darauf hinaus, dass 0 bis 31 und 255 womöglich nicht als Input vorkommen.

            10 oder 13 (je nach System auch beide) schon. Und 9 auch.

            Qapla'

            --
            Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
  4. Hallo,

    ich bin kein Mathegenie und hatte auch nie etwas mit Verschlüsselung zutun... doch das Thema fasziniert mich sehr.

    Eine einfache Verschlüsselung, wie setzt man sowas um?

    Ich hatte mir gedacht ein Array mit 26 Elementen zu erstellen.. von A bis Z
    Der Index des Arrays wäre dann ja 0 - 25 ....

    Nun soll z.B. das Wort "Hallo" zerflückt werden... Buchstabe für Buchstabe..
    H wäre dann ja das 7 Element im Array... nun soll aber der Buchstabe getauscht werden genau einen weniger also ArrayIndex -1 wäre dann ja der Buchstabe G mit dem Index 6 (-1). Das soll so weitergehen bis das komplette Wort "verschlüsselt" wurde.

    Doch nun kommt schon das erste Problem... spätestens beim A wird einen Fehler geben da der Index im Array von A = 0 ist... 0-1 wird einen Fehler ausgeben...

    Also kann ich das ganz Project knicken...

    So, jetzt seht ihr wie doof ich bin und wie ich Denke...

    Daher meine Frage, wie kann ein Vollpfosten wie ich mit dem Thema richtig anfangen?

    Was wäre richtig für deine Bedürfnisse?
    Du kannst dir zum Beispiel im Internet irgendwelche Scripte oder sonstige Seiten suchen und die lesen. Da steht dann sehr viel drin, du weißt einiges über Grundlagen und weiterführende Konzepte. Das dauert halt, aber wenn es dich ohne Zeitdruck interessiert und du Zeit hast, wär das die beste Möglichkeit.

    Oder du pickst dir ein beliebiges Verfahren raus und setzt das selber um, falls du was schnelles brauchst und dir die Sicherheit nicht ganz so wichtig ist. Hauptsache man kanns nicht gleich im Klartext lesen. So wie dein Beispiel, als erstes Lernprojekt ists schon mal ok. Aber unknackbar oder auch nur annähernd sicher ist das noch lange nicht.

    Oder du hast einen bestimmten Einsatzzweck mit etwas höherer Sicherheitsstufe. Da kanns dann ja egal sein wie das genau funktioniert, Hauptsache es tut was es soll. Da kriegst du dann gern einen Tip, was du einsetzen müsstest. Bibliotheken dürfte es da bestimmt für ziemlich viele Sprachen geben. Das läuft dann (sag ich jetzt mal) auf ein paar wenige Zeilen raus, im Grunde geht der Text und ein Passwort rein und es kommt irgendwas kryptisches dabei raus. Oder eben andersrum.

  5. hallo,

    Daher meine Frage, wie kann ein Vollpfosten wie ich mit dem Thema richtig anfangen?

    Erstmal solltest du dich selbst nicht so herabsetzen, das ist uncool ;P

    Wandle Zeichen für Zeichen in den dezimalen ASCII-Wert um, rechne den Schlüssel an oder ab und wandle den Wert wieder in Buchstaben um. Dazu noch eine Abfrage, ob der Wert im Bereich deiner zugelassenen Zeichen ist.
    Wenn nicht, kannst du zum Beispiel 26 draufrechnen, falls das Zeichen ein A ist.

    grüße,
    henman

    --
    "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
  6. Hi.

    Daher meine Frage, wie kann ein Vollpfosten wie ich mit dem Thema richtig anfangen?

    Buchtipp: Geheime Botschaften von Simon Singh. Es umreißt die Geschichte der Verschlüsselung, im Hinblick auf die Funktionalität und auch die historischen Anwendungen und Auswirkungen verschiedener Verschlüsselungsverfahren. Sehr interessant und ebenso vergnüglich.

    Viele Grüße,
    der Bademeister