Kalle_B: was bedeutet $i%strlen($schluessel)

Hallöle,

auf der Suche, wie ich Daten mit PHP verschlüsseln kann, bin ich auf http://forum.de.selfhtml.org/archiv/2003/6/t49121/ gestossen.

Da wird ein String mit der xor-Funktion bearbeitet:
function verschluesseln($klartext, $schluessel)
{
 $geheimtext = "";
 for($i=0; $i<strlen($klartext);$i++)
  $geheimtext .= chr(ord($klartext{$i})^ord($schluessel{$i%strlen($schluessel)}));
 return base64_encode($geheimtext);
}

Was bedeutet dabei $i%strlen($schluessel) ?

Was ist, wenn die Länge des Schlüssels verbraucht ist? Geht es da wieder mit der ersten Stelle los?

MfG Kalle

  1. Hallo Kalle,

    auf der Suche, wie ich Daten mit PHP verschlüsseln kann, bin ich auf http://forum.de.selfhtml.org/archiv/2003/6/t49121/ gestossen.

    Da wird ein String mit der xor-Funktion bearbeitet:

    willst Du es unbedingt unsicher haben?

    Ich zitiere Henryk:

    <zitat>
        Wenn man es unbedingt unsicher haben will, kann man auch folgende einfache
        xor-Funktion nehmen:

    [... der von Dir gepostete Code ...]
    </zitat>

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      willst Du es unbedingt unsicher haben?

      Natürlich nicht. Ich nehme einen langen Schlüssel, etwa
      $schluessel = "fghioerghjm,mklötghjcvbqwerg34567890ß´FGH45tzujklvhjSDFGHJKLvhjkiofghjfghvbhjCFGHJgh_:LKJHGFDsdrtvghkoHJKLnbgfghjLÖPÜ";

      Es geht um die Verschlüsselung zu übertragender Dateien, Texte und Grafiken. Ich verknüpfe das erste Byte der Datei mit dem ersten Byte des Schlüssels, das zweite mit dem zweiten usw. Wenn der Schlüssel "abgearbeitet" ist, wird wieder sein erstes Byte genommen.

      Wahlweise könnte ich bei wiederholter Verwendung des Schlüssels noch shiften, also die ersten x Stellen vorne abschneiden und hinten anhängen.

      Ist das immer noch unsicher?

      Lieben Gruß, Kalle

      1. Hallo Kalle,

        Es geht um die Verschlüsselung zu übertragender Dateien, Texte und Grafiken. Ich verknüpfe das erste Byte der Datei mit dem ersten Byte des Schlüssels, das zweite mit dem zweiten usw. Wenn der Schlüssel "abgearbeitet" ist, wird wieder sein erstes Byte genommen.

        Wahlweise könnte ich bei wiederholter Verwendung des Schlüssels noch shiften, also die ersten x Stellen vorne abschneiden und hinten anhängen.

        Ist das immer noch unsicher?

        ja, das ist immer noch unsicher.

        Wie Henryk schrieb ist das Verfahren erst dann sicher, wenn der Schlüssel mindestens so lang ist wie der zu verschlüsselnde Text, aus zufälligen Zeichen besteht und niemals wieder verwendet wird ...

        Warum willst Du nicht die bereits angesprochenen und auch von Henryk empfohlenen mcrypt-Funktionen nutzen?

        Freundliche Grüße

        Vinzenz

        1. Hallo Vinzenz,

          Warum willst Du nicht die bereits angesprochenen und auch von Henryk empfohlenen mcrypt-Funktionen nutzen?

          Ich bin äußerst skeptisch gegen Funktionen, die ich nicht voll verstanden habe (black boxes). Da wittere ich Verdacht, dass irgendjemand (Staat, Microsoft, Google, ...) die Lauscher dazwischen hat um mitzuhören.

          In einem anderen Thread https://forum.selfhtml.org/?t=169838&m=1109544 hat mir dedlfix heute empfohlen, die Firefox-Extension livehttpheaders zu laden.

          Ich war nahe dran, aber als sich beim Download plötzlich eine vollkommen andere Domain (http://ftp.ntua.gr/ statt http://livehttpheaders.mozdev.org/) meldete, hab ich das tunlichst unterlassen. Wer weiss, welchen Wurm ich mir da ins Nest hole.

          Bin mit meiner kritischen Art bisher ganz gut gefahren.

          Kalle

          1. Hi,

            Ich bin äußerst skeptisch gegen Funktionen, die ich nicht voll verstanden habe

            Dann musst du, bei dem was du hier immer wieder an Fragen stellst, vermutlich einer der groessten Skeptiker sein, die hier rumlaufen.

            MfG ChrisB

            1. Hi,

              Ich bin äußerst skeptisch gegen Funktionen, die ich nicht voll verstanden habe

              Dann musst du, bei dem was du hier immer wieder an Fragen stellst, vermutlich einer der groessten Skeptiker sein, die hier rumlaufen.

              Keine Ahnung. Stamme aus dem Norden, da gilt die Devise: "Wat de Buer nich kennt, det frett he nich".

              Übersetzung für Hiesige: "Was der Bauer nicht kennt, das verspeist er nicht".

              Oder, um einen anderen weisen Mann zu zitieren: "Wer nach allen Seiten offen ist, kann nicht ganz dicht sein"

              Kalle

              1. echo $begrüßung;

                Oder, um einen anderen weisen Mann zu zitieren: "Wer nach allen Seiten offen ist, kann nicht ganz dicht sein"

                Na dann sieh mal zu, dass du keine Verstopfung bekommst, wenn du zu verschlossen bist.

                Viele Non-Profit-Projekte können sich keine eigenen Serverfarmen leisten. Sie setzen deswegen Mirror-Server ein, um die Last zu verteilen. Diese sind oftmals Spenden an Traffic und Speicherplatz. Durch die Signierung beim Firefox kannst du dir sicher sein, dass nichts unzertifiziertes in deinen Rechner gelangt. Es sei denn, du hast den Firefox schon aus dubiosen Quellen, und da wurde was an den Einstellungen zu vertrauenswürdigen Seiten manipuliert, oder es wurden ihm zwischenzeitlich welche untergeschoben.

                Die livehttpheaders-Extension gibt es auch unter https://addons.mozilla.org/de/firefox/addon/3829, und da wurde mir der Download von ...mozilla.org angeboten.

                Bist du dir sicher, dass dort keiner ein Kuckucksei ins Nest gelegt hat?

                echo "$verabschiedung $name";

            2. Mahlzeit,

              Dann musst du, bei dem was du hier immer wieder an Fragen stellst, vermutlich einer der groessten Skeptiker sein, die hier rumlaufen.

              Naja ... nur weil er nicht paranoid ist, heißt das noch lange nicht, dass SIE nicht hinter ihm her sind ... oder so ähnlich.

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          2. Hallo,

            Ich bin äußerst skeptisch gegen Funktionen, die ich nicht voll verstanden habe (black boxes).

            Rijndael, Blowfish, Elgamal usw. sind meines Wissens als Open Source implementiert, also viel Spaß beim Lesen des Quellcodes.

            Ich war nahe dran, aber als sich beim Download plötzlich eine vollkommen andere Domain (http://ftp.ntua.gr/ statt http://livehttpheaders.mozdev.org/) meldete, hab ich das tunlichst unterlassen. Wer weiss, welchen Wurm ich mir da ins Nest hole.

            Witzkeks. Schonmal was von Mirrors gehört? Dies ist der FTP-Mirror der technischen Universität in Athen, Griechenland. Genauso wie es in Deutschland tausende Unis und FHs mit dicken FTP-Mirrors gibt. So funktioniert die Verteilung von Open-Source-Software und Freeware halt.

            Echtheit überprüft man durch SHA-Signaturen oder kryptographische Signaturen, aber nicht durch Panik.

            Mathias

        2. Hello,

          Warum willst Du nicht die bereits angesprochenen und auch von Henryk empfohlenen mcrypt-Funktionen nutzen?

          Vielleicht will er etwas über die Stufen der Verschlüsselung lernen?

          Aber hatten wir da nicht im letzten Jahr erst so einen Mammutthread mit jemandem, der das auch wollte? Erinnert sich noch jemand daran, wie der Titel (oder der OP) des Threads hieß? Ich kann ihn nicht wiederfinden.

          Ein harzliches Glückauf

          Tom vom Berg

          http://bergpost.annerschbarrich.de
          .

          --
          Nur selber lernen macht schlau
    2. Hallo Kalle,

      auf der Suche, wie ich Daten mit PHP verschlüsseln kann, bin ich auf http://forum.de.selfhtml.org/archiv/2003/6/t49121/ gestossen.

      Da wird ein String mit der xor-Funktion bearbeitet:

      willst Du es unbedingt unsicher haben?

      Beweise mir, dass es unsicher ist und ernte 100 €:
      https://forum.selfhtml.org/?t=169929&m=1110147

      LG Kalle

  2. echo $begrüßung;

    Wenn man das ganze mit etwas mehr Zwischenraum notiert, wirst du sicher die einzelnen Operatoren besser erkennen und im Handbuch nachschlagen können.

    $geheimtext .= chr(ord($klartext{$i})^ord($schluessel{$i%strlen($schluessel)}));

    $geheimtext .= chr(ord($klartext[$i]) ^ ord($schluessel[$i % strlen($schluessel)]));

    Die Schreibweise $string{position} ist mittlerweile unerwünscht. Stattdessen greift man wie bei Arrays mit eckigen Klammern zu.

    Was ist, wenn die Länge des Schlüssels verbraucht ist? Geht es da wieder mit der ersten Stelle los?

    Modulo macht's möglich.

    echo "$verabschiedung $name";

  3. Guten Abend,

    Was bedeutet dabei $i%strlen($schluessel) ?

    % ist der Modulo-Operator ((Divisionsrestoperator).
    Also hier $i Mod strlen(Schlüssel)

    Was ist, wenn die Länge des Schlüssels verbraucht ist? Geht es da wieder mit der ersten
    Stelle los?

    Nein. Dann endet die for-Schleife.

    Nimm besser eine der mcrypt-Funktionen mit einem starken Secret.

    1. echo $begrüßung;

      Was ist, wenn die Länge des Schlüssels verbraucht ist? Geht es da wieder mit der ersten
      Stelle los?
      Nein. Dann endet die for-Schleife.

      Stimmt nicht, denn die for-Schleife geht über die Länge des Klartextes, nicht über die des Schlüssels.

      echo "$verabschiedung $name";

      1. Hallo,

        Stimmt nicht, denn die for-Schleife geht über die Länge des Klartextes, nicht über die
        des Schlüssels.

        Err, Du hast natürlich Recht.

  4. Hallo,

    Was bedeutet dabei $i%strlen($schluessel) ?

    Das % ist ein Operator.

    Gruß
    Olaf

  5. habe auf dem Sender-Server ein Programm installiert, dass per Parameter PHP- Dateien liest, verschlüsselt und übermittelt.

    http://tm3-fuhrpark.de/send_file.php?infile=send_file.php

    Zum öffentlichen Test darf sich das PHP- Script nur selbst aufrufen.

    Ich denke, die Sicherheitsstufe ist ausreichend.

    Kalle