Syntaxfrage: $c.=$a{$i}^$b{$i};

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Syntaxfrage: $c.=$a{$i}^$b{$i};

    Hallo,
    ich verstehe die nachfolgende Syntax nicht so recht.

    Kann mir jemand mal die Zeile $c.=$a{$i}^$b{$i}; erklären?

    Die geschweiften Klammern habe ich so noch nie gesehen,
    welche Funktion haben diese?

    - irgendetwas mit XOR...?

    # beliebiger Text
    $a="12345678901234567890";
    #md5-String
    $b="0÷ÌKè£,Ýܝ©Ò7/5u";
    $l="16";

    function bytexor($a,$b,$l)
    {
    $c="";
    for($i=0;$i<$l;$i++) {
    $c.=$a{$i}^$b{$i};
    }
    return($c);
    }


    Hintergrund: Ich muss diese Funktion in J-Script abbilden... :-(

    Gruss
    Roland

  • #2
    Re: Syntaxfrage: $c.=$a{$i}^$b{$i};

    http://www.php.net/manual/de/languag....string.substr


    Javascript-Äquivalent: charAt()
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      und ^ ist hier beschrieben
      http://de3.php.net/manual/en/languag...rs.bitwise.php
      JavaScript-Äquivalent musst du per Google suchen

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Hallo,
        danke für die Hinweise,
        diese haben mir weitergeholfen

        Dass die Syntax $a{$i} eine Offset-Angabe ist,
        musste ich erst mal so verdauen...


        JScript
        t1="r";
        t2="8";
        t3 = t1^t2;

        Ergibt in t3 => 8

        PHP-Script
        $t1="r";
        $t2="8";
        $t3=$t1^$t2;

        Ergibt in $t3 => J

        Was nun,
        hat hier jemand eine Idee?

        Gruss
        Roland
        Zuletzt geändert von rolsch; 16.11.2006, 11:31.

        Kommentar


        • #5
          PHP-Code:
          var_dump(chr(ord("r") ^ ord("8"))); 
          aber wieso interessieren dich solch kranke konstrukte?

          Kommentar


          • #6
            Hi,
            danke, muss aber genau anders rum sein

            var_dump(chr(ord("r") ^ ord("8"))); ergibt ebenso wie...

            $t1="r";
            $t2="8";
            $t3=$t1^$t2;

            ...den Wert J

            So wie das PHP Script seinen Output (=J) berechnet brauche ich dies für's JScript.
            Bei Verwendung beider Code-Schnipsel muss daher immer der gleiche, berechnete Wert herauskommen.
            - das JScript muss/kann ich anpassen und nicht das PHP-Script.

            PHP-Script
            $t1="r";
            $t2="8";
            $t3=$t1^$t2;

            Ergibt in $t3 => J

            JScript
            t1="r";
            t2="8";
            t3 = t1^t2;

            Ergibt in t3 => 8 = anderer Wert als beim PHP-Script

            Hintergrund

            Ein JScript berechnet unter anderem diesen XOR-Wert und übergibt diesen an ein nachfolgendes PHP-Script.
            Dort wird auch ein XOR gebildet, es kommen aber hierbei andere Werte als bei dem JScript heraus.
            Ich gehe davon aus, dass die PHP-Werte korrekt sind

            Gruss
            Roland
            Zuletzt geändert von rolsch; 16.11.2006, 12:57.

            Kommentar


            • #7
              Solch kranke konstrukte sind dazu geeignet eine einfache stromchiffre zu
              implementieren. Man generiert on the fly eine schlüsselstrom aus
              einem password/passphrase.
              Wenn P die menge der zeichen im plaintext ist und S die menge der zeichen
              im Schlüsselstrom so erhält man die chiffrierfunktion mit der man die menge
              der zeichen im chiffretext erzeugen kann.

              f : P -> C

              mit

              f(p,s) = p ^ s

              Die funktion ist umkehrbar.

              f(f(p,s),s) = p

              Naja ist relativ einfach aber doch für einfache sachen geeignet.

              greets
              Zuletzt geändert von closure; 17.11.2006, 08:18.
              (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

              Kommentar


              • #8
                closure, danke!

                rolsch, finde doch erst mal heraus, warum in js 8 rauskommt.

                Kommentar


                • #9
                  Tja,
                  warum kommt bei JScript eine 8 heraus...

                  Wenn ich...

                  PHP-Script
                  $t1="r";
                  $t2="8";
                  $t3=$t1^$t2;

                  Ergibt in $t3 => J

                  nach PHP-Script
                  $t1="r";
                  $t2=8;
                  $t3=$t1^$t2;

                  Ergibt in $t3 => 8

                  ...abändere, kommt auch bei PHP eine 8 heraus.

                  Dies hängt wohl an der Wertezuweisung der Var's (char/num),
                  aber hinbekommen habe ich dies in JScript leider nicht -

                  JScript
                  t1="r";
                  t2=8; oder t2="8";
                  t3 = t1^t2;

                  Ergibt immer t3 => 8

                  - kein Erfolg...

                  Gruss
                  Roland

                  Kommentar


                  • #10
                    ASCII-Code "r" = HEX 72 = DEC 114
                    ASCII-Code "8" = HEX 38 = DEC 56

                    HEX 72 ^ HEX 38 = HEX 4A bzw.
                    DEC 114 ^ DEC 56 = DEC 74,
                    ASCII-Code HEX 4A bzw. DEC 74 = "J"


                    Code:
                    java[i][/i]script:alert(String.fromCharCode("r".charCodeAt(0) ^ "8".charCodeAt(0)));
                    in Adresszeile eingeben, freuen :-)
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Original geschrieben von wahsaga
                      Code:
                      java[i][/i]script:alert(String.fromCharCode("r".charCodeAt(0) ^ "8".charCodeAt(0)));
                      in Adresszeile eingeben, freuen :-) [/B]
                      - ein dickes DANKE!



                      Gruss
                      Roland

                      Kommentar

                      Lädt...
                      X