tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
1039
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Dec 2001
    Ort
    Hannover
    Beiträge
    4.234
    Das Ziel der Codespielerei dürfte wohl jeder aus seiner Kindheit kennen: Die berühmte Cäsar Verschlüsselung. Jeder Buchstabe eines Wortes (oder Satzes) wird im Alphabet um n Zeichen verschoben - zyklisch. Ich denke, jeder kennt die zwei Scheiben mit Alphabet, die durch drehen verschlüsseln, bzw. entschlüsseln.

    Mit ein wenig Hilfe aus dem Forum habe ich folgendes Script geschrieben. Seltsamerweise bekomme ich vom Mozilla JS-Debugger keine Fehlermeldung (der IE übrigens auch nicht) sondern nur einen "NaNNaNNaNNaNNaNNaNNaNNaN"-String zurück. Irgendwo ist ein Fehler, den ich nicht finde.

    Die Verschlüsselung ist natürlich auf 1:1 Übergabe des Strings gesetzt, damit man auch den 'verschlüsselten' Originalstring als Ergebnis erhält.

    Mein PHP-Script war in 20 Minuten fertig, an diesem JS-Script sitze ich schon 2 Tage *kotz*

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    
    <script type="text/javascript">
    <!--
    function fInit(){
        sChars = new String("abcdefghijklmnopqrstuvwxyz-");
        aChars = new Array();
        for(i = 0; i<sChars.length; i++){
            aChars[i+1] = sChars.charAt(i);
        }
        iCharslength = sChars.length;
        return iCharslength;
    }
    function fFind(sSearch){
        for(var x=0; x<this.length; x++){
            if(this[x] == sSearch){
                var iIndex = x;
                return iIndex;
            }
        }
        return -1;
    }
    Array.prototype.find = fFind;
    function fInject(sMail, sKey){
        fInit();
        aMail = new Array();
        aResult = new Array();
        var sResult = "";
        for(var y=0; y<sMail.length; y++){
            aMail[y+1] = sMail.charAt(y);
        }
        for(var z=1; z<aMail.length; z++){
            if((aMail[z] - sKey) < 1){
                aResult[z] = (aMail[z] - sKey) + iCharslength;
            } else {
                aResult[z] = aMail[z] - sKey;
            }
        }
        alert(aResult.join(""));
    }
    fInject('ich-bin-ein-satz', '27')
     
    //-->
    </script>
    Geändert von Neurodeamon (28.02.04 um 03:50 Uhr)
     
    Copy for free - Yet another page for free software with soures:
    • BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
    • W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
    • AppStarter (Somewhat like PortableApps launcher)
    • QuakeConsole (Show/Hide windows console with your tilde key)
    • BetterFileRenamer (Simple file renamer that adds date and version)
    .... more to come

  2. #2
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Ich hab es mal etwas angepasst, weil da anscheinend wirklich ein paar Fehler drin waren. Und wo ich schonmal dabei war, hab ich auch gleich noch mal etwas aufgeräumt.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    
    <script type="text/javascript">
    <!--
     
    function fFind(sSearch){
        for(var x = 0; x < this.length; x++){
            if(this[x] == sSearch){
                var iIndex = x;
                return iIndex;
            }
        }
        return -1;
    }
     
    Array.prototype.find = fFind;
     
    function stringToArray(stringValue) {
        stringArray = new Array();
        for(i = 0; i < stringValue.length; i++) {
            stringArray[i + 1] = stringValue.charCodeAt(i) - 96;
        }
        return stringArray;
    }
     
    function fInject(sMail, sKey){
        sChars = new String("abcdefghijklmnopqrstuvwxyz");
        aChars = stringToArray(sChars);
        aMail = stringToArray(sMail);
        aResult = new Array();
        var sResult = "";
        iCharslength = sChars.length;
     
        for(var z = 1; z < aMail.length; z++) {
            if((aMail[z] - sKey) < 1){
                aResult[z] = (aMail[z] - sKey) + iCharslength;
            } else {
                aResult[z] = aMail[z] - sKey;
            }
        }
        
        for(j = 1; j < aResult.length; j++) {
            aResult[j] = String.fromCharCode(aResult[j] + 96);
        }
        return aResult.join("");
    }
     
    alert(fInject("ich-bin-ein-satz", "27"));
     
    //-->
    </script>
     

  3. #3
    Registriert seit
    Dec 2001
    Ort
    Hannover
    Beiträge
    4.234
    Wenn ich jetzt mal drüberschaue finde ich - bis auf die neue anordnung - nur wenige grundlegende Änderungen.

    Da wäre charCodeAt statt charAt. Aber was soll das ' - 96' ? Hat das was mit dem Latin1 Zeichensatz zu tun?
    charCodeAt(i) - 96;
    Die stringToArray-Funktion erwähne ich mal nicht
    Ich wollte mit dem Umschreiben warten, bis ich den Bug gefunden hab

    Da ich noch am lernen bin, würde ich gerne wissen was ich genau falsch gemacht habe bei meinem Code.

    Aber irgendwie kommt bei Deiner Korrektur aber auch nichts besseres heraus

    Ausgabe: hbg, ahm,dhm,r`sy
     
    Copy for free - Yet another page for free software with soures:
    • BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
    • W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
    • AppStarter (Somewhat like PortableApps launcher)
    • QuakeConsole (Show/Hide windows console with your tilde key)
    • BetterFileRenamer (Simple file renamer that adds date and version)
    .... more to come

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Ich muss gestehen, ich hab mich als Kind nicht mit Caesar's Code beschäftigt...nur mit unsichtbarer Tinte

    kannst du mal erläutern, was genau der tut....also was der z.B. aus
    'ich-bin-ein-satz'
    machen soll...
     

  5. #5
    Registriert seit
    Apr 2002
    Ort
    Ingolstadt
    Beiträge
    2.940
    Ich glaub ihr habt nur aneinander vorbeigeredet . Neuro, du willst den String verschieben, dabei aber nur auf den Zeichen vorrat in sChars zurückgreifen, oder? Dario: Du shiftest den String um den als Parameter übergeben sKey, ohne rücksicht auf sChars? Kann auch sein das ich euch jetzt falsch verstanden habe.

    Ich habs mal etwas geändert - vielleicht kommt das näher an das fertige Teil:

    PHP-Code:
    <script type="text/javascript">
    <!--
    function 
    fFind(sSearch){
        for(var 
    0this.lengthx++){
            if(
    this[x] == sSearch){
                var 
    iIndex x;
                return 
    iIndex;
            }
        }
        return -
    1;
    }
    Array.
    prototype.find fFind;


    function 
    stringToArray(stringValue) {
        
    stringArray = new Array();
        for(
    0stringValue.lengthi++) {
            
    stringArray[i] = stringValue.charAt(i);
        }
        return 
    stringArray;
    }


    function 
    fLoop(iOffset){
      if(
    iOffset>this.length){
        return 
    this[iOffset%this.length];
      }else{
        return 
    this[iOffset];
      }
    }
    Array.
    prototype.loop fLoop;


    function 
    fInject(sMailsKey){
        
    sChars = new String("abcdefghijklmnopqrstuvwxyz-");
        
    aChars stringToArray(sChars);
        
    aMail stringToArray(sMail);
        
    aResult = new Array();
        var 
    sResult "";
        
    iCharslength sChars.length;

        for(var 
    x=0x<aMail.lengthx++){
          
    aResult[x] = aChars.loop(parseInt(aChars.find(aMail[x]))+parseInt(sKey)); 
        }
        return 
    aResult.join("");    
    }

    alert(fInject("ich-bin-ein-satz""10")); 
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Mein Ergebnismit eingebautem Decoder)
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    <script type="text/javascript">
    <!--
     
    sChars =String("abcdefghijklmnopqrstuvwxyz-");
    function caesar(str,n,decode)
    {
    while(n>=sChars.length){n-=sChars.length;}
    z=decode?-n:n;aChars=new Array();out='';
    for(i=0;i<sChars.length;++i)
        {
        x=i+z;
        if(x>=sChars.length){x-=sChars.length;}
        else if(x<0){x+=sChars.length;}
        aChars[sChars.charAt(i)]=x;
        }
    for(i=0;i<str.length;++i)
        {
        out+=sChars.charAt(aChars[str.charAt(i)]);
        }
    return out;
    }
    alert(caesar("ich-bin-ein-satz",13,0));
     
    //-->
    </script>
    ....zum dekodieren im Aufruf die 0 durch 1 ersetzen.
     

  7. #7
    Registriert seit
    Apr 2002
    Ort
    Ingolstadt
    Beiträge
    2.940
    Ausgezeichnet - wenigsten kommen wir auf das gleiche Ergebniss
     

  8. #8
    Registriert seit
    Dec 2001
    Ort
    Hannover
    Beiträge
    4.234
    Ich glaub ihr habt nur aneinander vorbeigeredet . Neuro, du willst den String verschieben, dabei aber nur auf den Zeichen vorrat in sChars zurückgreifen, oder? Dario: Du shiftest den String um den als Parameter übergeben sKey, ohne rücksicht auf sChars? Kann auch sein das ich euch jetzt falsch verstanden habe.
    Korrekt! Genau das ist der Sinn der Sache. Ich greife auf den selbst definierbaren Zeichenvorrat.

    Ich glaube ich beschreibe das Problem zu ungenau. Es ist super, das Ihr den Code umschreibt und mir andere Möglichkeiten aufzeigt. Irgendwie schiesst das aber am Ziel vorbei. Nehmen wir nochmal meinen Ur-Code - es geht nur um ein Problem - Vereinfachung und höhere Ordnung bringe ich später hinein. Es geht mir nur darum, das ein kleiner Teil sich nicht so verhält, wie ich es erwarten würde.

    Original-Code
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    
    <script type="text/javascript">
    <!--
    function fInit(){
        sChars = new String("abcdefghijklmnopqrstuvwxyz-");
        aChars = new Array();
        for(i = 0; i<sChars.length; i++){
            aChars[i+1] = sChars.charAt(i);
        }
        iCharslength = sChars.length;
        return iCharslength;
    }
    function fFind(sSearch){
        for(var x=0; x<this.length; x++){
            if(this[x] == sSearch){
                var iIndex = x;
                return iIndex;
            }
        }
        return -1;
    }
    Array.prototype.find = fFind;
    function fInject(sMail, sKey){
        fInit();
        aMail = new Array();
        aResult = new Array();
        var sResult = "";
        for(var y=0; y<sMail.length; y++){
            aMail[y+1] = sMail.charAt(y);
        }
        for(var z=1; z<aMail.length; z++){
            if((aMail[z] - sKey) < 1){
                aResult[z] = (aMail[z] - sKey) + iCharslength;
            } else {
                aResult[z] = aMail[z] - sKey;
            }
        }
        alert(aResult.join(""));
    }
    fInject('ich-bin-ein-satz', '27')
     
    //-->
    </script>

    Fehler vermutlich im folgenden Teil:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
        for(var z=1; z<aMail.length; z++){
            if((aMail[z] - sKey) < 1){
                aResult[z] = (aMail[z] - sKey) + iCharslength;
            } else {
                aResult[z] = aMail[z] - sKey;
            }
        }
        alert(aResult.join(""));

    Wenn ich alle anderen Teile ausgeben lasse, stimmen die einzelnen Ausgaben. Aber in diesem Teil passiert die eigentliche 'Verschlüsselung'.

    Zur Erklärung:
    Ich definiere einen Zeichensatz. Den Zeichensatz zestückele ich und weise jedem Zeichen einen numerischen Wert zu (a = 1, b = 2, etc.). Das gleiche muss ich mit dem Input machen. Ich habe also nur noch die numerischen Werte.

    Jetzt kann ich mit simpler Addition und Subtraktion die Zeichen verschieben.
    Nehmen wir z. B. den String 'abcde'. Die Zahlenwerte sind: '1, 2, 3, 4, 5'. Ich kann die Zeichen nun im von mir definierten numerischen Zeichensatz-'Aphabet' verschieben indem ich den Schlüssel hinzuaddiere oder subtrahiere. Nehmen wir schlüssel '5' und Addition:

    a = 1 wird zu a = 6
    In unserem Zeichensatz ist 6 = f
    Also wird aus a -> f

    Der Knackpunkt ist der limitierte Zeichensatz der in meinem Beispiel 27 Zeichen besitzt. Wenn ich also jeden Buchstaben um 27 Zeichen verschiebe, erhalte ich den Originalstring als Ergebnis, damit weiß ich, das mein Script funktioniert. Da 27 der Verschiebung um 0 Zeichen entspricht. Eine Verschiebung um 27 Zeichen KANN nur den gleichen String liefern, eine Verschiebung um 1 hingegen würde jeden Buchstaben um 1 Zeichen verschieben. Ein höherer Wert als 27 wäre unnütz, weil 28 z. B. wieder der 1 entsprechen würde, 29 der 2, usw.

    Die Verschiebung des Zeichen 'Z' um fünf Zeichen nach rechts - also eine Addition von 5 - stößt natürlich auf das Problem, das es nur 27 Zeichen gibt. Also rechne ich die Zeichen innerhalb des Strings ab A, bzw. Zeichen 1 dazu. Also: Z + 5 verschiebt das Zeichen von Z +1 zum Zeichen '-' und die restlichen 4 werden ab A dazugerechnet. Bei der Addition ist es das gleiche, nur umgedreht.

    ----------

    Ich möchte doch bloss den Fehler in meinem Code erfahren.

    Bei allem Respekt: Ich will gar kein funktionierendes anderes Script, es geht mir doch ums Verstehen meines Fehlers und nicht um ein tolles von wem anderen geschriebenen Script. Wie gesagt, mein Script läuft bis auf die Ausgabe. Ich bekomme keinen Return-Wert. Und bei einer direkten Ausgabe mit alert() erhalte ich NaN statt der einzelnen Zeichen. *sigh*

    Ich hoffe das war jetzt nicht ganz so missverständlich
    Geändert von Neurodeamon (29.02.04 um 00:01 Uhr)
     
    Copy for free - Yet another page for free software with soures:
    • BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
    • W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
    • AppStarter (Somewhat like PortableApps launcher)
    • QuakeConsole (Show/Hide windows console with your tilde key)
    • BetterFileRenamer (Simple file renamer that adds date and version)
    .... more to come

  9. #9
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Naja,...was mich betrifft, ich seh bei deinem Code überhaupt nicht durch, was er bezwecken soll.
    Nur, weil ein Skript keinen Fehler produziert, würde ich nicht behaupten, dass es läuft.

    z.B.macht das hier keinen Sinn, soweit ich sehe:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    function fFind(sSearch){
        for(var x=0; x<this.length; x++){
            if(this[x] == sSearch){
                var iIndex = x;
                return iIndex;
            }
        }
        return -1;
    }
    Array.prototype.find = fFind;
    da du nirgends auf diese Function zugreifst, kanns du sie auch gleich weglassen....das Skript läuft trotzdem wie bisher.

    Dann das:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    function fInit(){
        sChars = new String("abcdefghijklmnopqrstuvwxyz-");
     
        aChars = new Array();
        for(i = 0; i<sChars.length; i++){
            aChars[i+1] = sChars.charAt(i);
        }
        iCharslength = sChars.length;
        return iCharslength;
    }
    es wird ´sChars´ definiert...OK, dann füllst du ´aChars´....aber wozu, diesen Array verwendest du nirgends. Zurückgegeben wird die Länge von sChars.
    Alles in allem hat dies den selben Effekt, als wenn du ´iCharslength´ und ´sChars´ normal als Variablen deklarieren würdest.
    Wenn man dies tut, sieht dann alles so aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    sChars ="abcdefghijklmnopqrstuvwxyz-";
    iCharslength = sChars.length;
     
    function fInject(sMail, sKey)
    {
        aMail = new Array();
        aResult = new Array();
        var sResult = "";
        for(var y=0; y<sMail.length; y++)
            {
            aMail[y+1] = sMail.charAt(y);
            }
        for(var z=1; z<aMail.length; z++)
            {
            if((aMail[z] - sKey) < 1)
                {
                aResult[z] = (aMail[z] - sKey) + iCharslength;
                }
           else
                {
                aResult[z] = aMail[z] - sKey;
                }
        }
        alert(aResult.join(""));
    }
    fInject('ich-bin-ein-satz', '27')
    Das Skript macht so genau das selbe wie im Ursprungszustand.

    Um die letzte Sache anzugehen....du bekommst keinen Return-Wert, weil die Funktion keinen Return-Wert hat.

    Dann gehen wir mal die Funktion durch:
    du definierst die Arrays ´aMail´ und ´aResult´...aber wozu ist die Variable ´sResult´ da?
    Dann wird der Array ´sMail´ gefüllt:
    Code :
    1
    2
    3
    4
    
    for(var y=0; y<sMail.length; y++)
            {
            aMail[y+1] = sMail.charAt(y);
            }
    Der hat dann folgenden Inhalt:
    aMail[1]='i';
    aMail[2]='c';
    aMail[3]='h';
    aMail[4]='-';
    aMail[5]='b';
    aMail[6]='i';
    aMail[7]='n';
    aMail[8]='-';
    aMail[9]='e';
    aMail[10]='i';
    aMail[11]='n';
    aMail[12]='-';
    aMail[13]='s';
    aMail[14]='a';
    aMail[15]='t';
    aMail[16]='z';

    dann wird der Array ´aResult´ gefüllt.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    for(var z=1; z<aMail.length; z++)
        {
            if((aMail[z] - sKey) < 1)
                {
                aResult[z] = (aMail[z] - sKey) + iCharslength;
                }
            else
                {
                aResult[z] = aMail[z] - sKey;
                }
        }
    .... da alle Elemente von ´aMail´ nicht numerisch sind, ist das Ergebnis der Berechnungen immer ´NaN´ ....daraus folgt denn im Endeffekt die Ausgabe von einer 'NaN'-Kette.

    Man könnte daher das Ganze auf
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    <script type="text/javascript">
    <!--
    function fInject(sMail, sKey)
    {
    var aResult=new Array();
    for(var z=0; z<sMail.length; z++)
        {
        aResult[z] = sMail.charAt(z) - sKey;
        }
        alert(aResult.join(""));
    }
    fInject('ich-bin-ein-satz', '27');
    //-->
    </script>
    dezimieren.... das ist im Grunde der Teil des Originalskriptes, der überhaupt durchlaufen wird... das Ergebnis ist ebenfalls dasselbe

    Ich hoffe, du beisst jetzt nicht in deine Tastatur
    Geändert von Sven Mintel (29.02.04 um 02:17 Uhr)
     

  10. #10
    Narrator Tutorials.de Gastzugang
    Na toll,
    dann geht der Script aba immer noch nich.
    Ausserdem fehlt jetzt die Abfrage ob der neue Wert im richtigen Bereich ist.
     

  11. #11
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Warum geht es nicht..es geht genauso wie vorher


    Die Abfrage nach dem Wertebereich:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    if((aMail[z] - sKey) < 1)
                {
                aResult[z] = (aMail[z] - sKey) + iCharslength;
                }
           else
                {
                aResult[z] = aMail[z] - sKey;
                }
    war überflüssig, da
    Code :
    1
    
    if((aMail[z] - sKey) < 1)
    immer "false" ist.(aMail[z] - sKey ist immer NaN und daher niemals kleiner als 1)
     

  12. #12
    Narrator Tutorials.de Gastzugang
    Naja ich denk ma Neurodeamon wollt nicht ne stark vereinfachte Version seines Codes ham sondern wissen wo der Fehler, liegt. Obwohl ers jez wohl wissen dürfte.
    EDIT:
    Muss halt noch den Char in ASCII-Code umwandeln
     

  13. #13
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Da wäre charCodeAt statt charAt. Aber was soll das ' - 96' ? Hat das was mit dem Latin1 Zeichensatz zu tun?
    -96 weil ich direkt mit dem ASCII-Code des Zeichens arbeite. Und der ist bei 'a' ist 97. 97 will ich aber nicht, sondern 1.

    Aber irgendwie kommt bei Deiner Korrektur aber auch nichts besseres heraus

    Ausgabe: hbg, ahm,dhm,r`sy
    Nicht? Ich denke schon. Vergleich doch einfach mal:
    Code :
    1
    2
    
    ich-bin-ein-satz
    hbg,ahm,dhm,r`sy
    Bei genauerem Hinsehen fällt auf, dass die Zeichen immer um die gleiche Anzahl Stellen (in diesem Fall -1) verschoben worden sind. Allerdings wie gesagt im darstellbaren ASCII-Bereich und nicht in einem selbstdefinierten Bereich.

    Zur Kontrolle kann man sich ja aus einer ASCII-Tabelle eine Schablone basteln.
     

  14. #14
    Registriert seit
    Dec 2001
    Ort
    Hannover
    Beiträge
    4.234
    Original geschrieben von fatalus
    Ich hoffe, du beisst jetzt nicht in deine Tastatur
    Nicht weswegen Du es wohl erwarten würdest. Ich tue sowas nur ungern, aber ich muss mich selbst zitieren:

    Wenn ich alle anderen Teile ausgeben lasse, stimmen die einzelnen Ausgaben.
    Natürlich läuft das Script nicht zusammen, ich habe es ja auch noch nicht zusammengebaut. Das ist eines meiner ersten Scripts welches ich in JS schreibe.

    Ja, ich beisse in die Tastatur, da ich es anscheinend nicht schaffe mich so auszudrücken, das ich verstanden werde

    Bei genauerem Hinsehen fällt auf, dass die Zeichen immer um die gleiche Anzahl Stellen (in diesem Fall -1) verschoben worden sind. Allerdings wie gesagt im darstellbaren ASCII-Bereich und nicht in einem selbstdefinierten Bereich.

    Zur Kontrolle kann man sich ja aus einer ASCII-Tabelle eine Schablone basteln.
    Ja, ich weiß das es so läuft wie Du es erwartet hast. Aber es lieft nicht so, wie ich es meinte. Also bringt es mir doch nichts. Wo sind meine Taschentücher *uaahhää* *sniff*

    Ich bau das ganze nochmal um und frage nochmal nach. Vermutlich liegt es daran, das die Struktur natürlich nicht übersichtlich genug ist.
    Geändert von Neurodeamon (29.02.04 um 07:23 Uhr)
     
    Copy for free - Yet another page for free software with soures:
    • BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
    • W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
    • AppStarter (Somewhat like PortableApps launcher)
    • QuakeConsole (Show/Hide windows console with your tilde key)
    • BetterFileRenamer (Simple file renamer that adds date and version)
    .... more to come

  15. #15
    Registriert seit
    Nov 2002
    Ort
    Altdorf bei Nürnberg
    Beiträge
    3.027
    Was ich nicht verstehe, ist: Warum machst du den neuen String in ein Array und
    joinst diesen dann?

    Es ist doch viel einfach, einfach einen zweiten String anzulegen, den ersten dann
    in einer Schleife wie bisher durchgehen, und mit charCodeAt den ASCII Wert
    herauszusuchen und um x zu erhöhen (wahlweise mit limitierung auf das Alpha-
    bet). Danach schreibst du den manipulierten ASCII Wert mit fromCharCode in
    den neuen String.

    Zu den Fehler im Script:
    Z.B. das hier:
    Code :
    1
    
    if((aMail[z] - sKey) < 1)
    Das sollte deswegen nicht gehen, weil charAt keinen ASCII Wert, sondern wieder
    einen Buchstaben zurückliefert.

    Auf die Gefahr hin, das zu machen, was du eigentlich vermeiden wolltest, hab
    ich auch mal eine Funktion gebaut:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    [color=#212975][b][color=#1F30D7]function[/color][/b] caesarCode[color=#AA6D24]([/color]a_sInput[color=#AA6D24],[/color] a_iChars[color=#AA6D24])[/color]
    [color=#AA6D24]{[/color]
        [b][color=#1F30D7]if[/color][/b] [color=#AA6D24]([/color]a_iChars [color=#AA6D24]>[/color][color=#AA6D24]=[/color] 26[color=#AA6D24])[/color] [color=#AA6D24]{[/color]    [color=#FF9F39]// Auf das Alphabet begrenzen[/color]
             a_iChars [color=#AA6D24]-[/color][color=#AA6D24]=[/color] 26[color=#AA6D24];[/color]
        [color=#AA6D24]}[/color]
     
        sRet [color=#AA6D24]=[/color] [b][color=#1F30D7]new[/color][/b] [b]String[/b][color=#AA6D24]([/color][color=#AA6D24])[/color][color=#AA6D24];[/color]
        [b][color=#1F30D7]for[/color][/b] [color=#AA6D24]([/color]i[color=#AA6D24]=[/color]0[color=#AA6D24];[/color] i[color=#AA6D24]<[/color]a_sInput[color=#AA6D24].[/color][b]length[/b][color=#AA6D24];[/color] i[color=#AA6D24]+[/color][color=#AA6D24]+[/color][color=#AA6D24])[/color] [color=#AA6D24]{[/color]    [color=#FF9F39]// String durchlaufen[/color]
            iChar [color=#AA6D24]=[/color] a_sInput[color=#AA6D24].[/color][b]charCodeAt[/b][color=#AA6D24]([/color]i[color=#AA6D24])[/color][color=#AA6D24];[/color]
            [b][color=#1F30D7]if[/color][/b] [color=#AA6D24]([/color][color=#AA6D24]([/color]iChar [color=#AA6D24]>[/color][color=#AA6D24]=[/color] 65[color=#AA6D24])[/color] [color=#AA6D24]&[/color][color=#AA6D24]&[/color] [color=#AA6D24]([/color]iChar [color=#AA6D24]<[/color][color=#AA6D24]=[/color] 90[color=#AA6D24])[/color][color=#AA6D24])[/color] [color=#AA6D24]{[/color]    [color=#FF9F39]// Wenn Großbuchstabe[/color]
                iChar [color=#AA6D24]+[/color][color=#AA6D24]=[/color] a_iChars[color=#AA6D24];[/color]
                [b][color=#1F30D7]if[/color][/b] [color=#AA6D24]([/color]iChar [color=#AA6D24]>[/color] 90[color=#AA6D24])[/color] [color=#AA6D24]{[/color]    [color=#FF9F39]// Wenn kein Großbuchstaben mehr (!= wenn Kleinbuchstabe)[/color]
                    iChar [color=#AA6D24]=[/color] 64 [color=#AA6D24]+[/color] iChar [color=#AA6D24]-[/color] 90[color=#AA6D24];[/color]
                [color=#AA6D24]}[/color]
                [b][color=#1F30D7]if[/color][/b] [color=#AA6D24]([/color]iChar [color=#AA6D24]<[/color] 65[color=#AA6D24])[/color] [color=#AA6D24]{[/color]    [color=#FF9F39]// siehe oben[/color]
                    iChar [color=#AA6D24]=[/color] 91 [color=#AA6D24]-[/color] [color=#AA6D24]([/color]65 [color=#AA6D24]-[/color] iChar[color=#AA6D24])[/color][color=#AA6D24];[/color]
                [color=#AA6D24]}[/color]
            [color=#AA6D24]}[/color] [b][color=#1F30D7]else[/color][/b] [b][color=#1F30D7]if[/color][/b] [color=#AA6D24]([/color][color=#AA6D24]([/color]iChar [color=#AA6D24]>[/color][color=#AA6D24]=[/color] 97[color=#AA6D24])[/color] [color=#AA6D24]&[/color][color=#AA6D24]&[/color] [color=#AA6D24]([/color]iChar [color=#AA6D24]<[/color][color=#AA6D24]=[/color] 122[color=#AA6D24])[/color][color=#AA6D24])[/color] [color=#AA6D24]{[/color]    [color=#FF9F39]// Wenn Kleinmbuchstabe[/color]
                iChar [color=#AA6D24]+[/color][color=#AA6D24]=[/color] a_iChars[color=#AA6D24];[/color]                           [color=#FF9F39]// Das gleiche wie mit Groß-[/color]
                [b][color=#1F30D7]if[/color][/b] [color=#AA6D24]([/color]iChar [color=#AA6D24]>[/color] 122[color=#AA6D24])[/color] [color=#AA6D24]{[/color]                           [color=#FF9F39]// buchstaben, nur in einem[/color]
                    iChar [color=#AA6D24]=[/color] 96 [color=#AA6D24]+[/color] iChar [color=#AA6D24]-[/color] 122[color=#AA6D24];[/color]                [color=#FF9F39]// anderen Zahlenraum[/color]
                [color=#AA6D24]}[/color]
                [b][color=#1F30D7]if[/color][/b] [color=#AA6D24]([/color]iChar [color=#AA6D24]<[/color] 97[color=#AA6D24])[/color] [color=#AA6D24]{[/color]
                    iChar [color=#AA6D24]=[/color] 123 [color=#AA6D24]-[/color] [color=#AA6D24]([/color]97 [color=#AA6D24]-[/color] iChar[color=#AA6D24])[/color][color=#AA6D24];[/color]
                [color=#AA6D24]}[/color]
            [color=#AA6D24]}[/color]
            sRet [color=#AA6D24]+[/color][color=#AA6D24]=[/color] [b]String[/b][color=#AA6D24].[/color][b]fromCharCode[/b][color=#AA6D24]([/color]iChar[color=#AA6D24])[/color][color=#AA6D24];[/color]
        [color=#AA6D24]}[/color]
     
        [b][color=#1F30D7]return[/color][/b] sRet[color=#AA6D24];[/color]
    [color=#AA6D24]}[/color]
     
    [b]alert[/b][color=#AA6D24]([/color]caesarCode[color=#AA6D24]([/color]caesarCode[color=#AA6D24]([/color][color=#FF0000]'aBcDeF-GhIjKl'[/color][color=#AA6D24],[/color] 2[color=#AA6D24])[/color][color=#AA6D24],[/color] [color=#AA6D24]-[/color]2[color=#AA6D24])[/color][color=#AA6D24])[/color][color=#AA6D24];[/color][/color]
     

Ähnliche Themen

  1. Download aus Result Document
    Von pymy im Forum PHP
    Antworten: 3
    Letzter Beitrag: 10.07.07, 15:42
  2. Verarbeitung des Query Result bei EJB 3.0 und JPA
    Von Cullen im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 09.07.07, 16:51
  3. PHP Result mit AJAX auswerten
    Von CarnivoreCI im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 27.06.07, 12:14
  4. DB result nicht Komplett
    Von XeN im Forum PHP
    Antworten: 2
    Letzter Beitrag: 14.05.04, 15:19
  5. Mysql Result
    Von h-brock im Forum PHP
    Antworten: 1
    Letzter Beitrag: 13.04.02, 15:15