Die Benutzung dieser Musterprogramme für Lehrveranstaltungen ist ohne Gewähr erlaubt. Copyright: Prof. Dr. Ulrich Holzbaur

Übungsaufgaben zu JavaScript

Stand: 19.12.2000

Übungsprogramm: PIN

Aufgabe Einfacher Code (Passwortschutz)
Verwendete Konstruktionen Eingabe, Ausgabe, Modulo, Schleife
Dieser Paswortschutz beruht auf dem folgenden JavaScript-Code, den Sie gerne knacken können:

    function pass(x)
    {
    var n1 =  7;  /*fest, natürlich sonst mehrstellig*/
    var n2 = 13;  /*fest, natürlich sonst mehrstellig*/
    var code = 9; /*wird aus der PIN und n1 und n2 berechnet:
                    code = PIN*n1 mod n2*/
    if(((x*n1)%n2)==code)
      {return 1}
      else {return 0};
    }

Die Lösung ist natürlich ganz einfach: Wenn code = PIN * n1 gilt ist PIN = code / n1.
Nun müssen wir nur 1/7 berechnen, allerdings mod 13.
L * 7 = 1 mod 13 wird durch 7^11 gelöst (kleiner Fermat´scher Satz: 7^(13-1) = 1 mod 13 )
7 ^ 11 =   1977326743 = 2 mod 13.  (na klar: 2 * 7 = 14 = 1 mod 13)
Die Lösung ist also PIN = code * 1/n1 = 9 * 2 = 18 = 5 mod 13
 

Übungsprogramm: PIN2

Aufgabe Einfacher Code (Passwortschutz)
Verwendete Konstruktionen Eingabe, Ausgabe, Modulo, Schleife
Und jetzt wirds ein bißchen schwieriger. Dieser Passwortschutz beruht auf dem selben Prinzip. Nur haben wir diesmal keine Primzahl. Der JavaScript-Code ist im Prinzip derselbe:

    function pass2(x)
    {
    var n1 =  207;  /*fest, natürlich sonst größer*/
    var n2 =  851;  /*Produkt zweier Primzahlen,
                      fest,natürlich sonst größer */
    var code =  322; /*wird aus der PIN und n1 und n2 berechnet:
                       code = PIN*n1 mod n2*/
    if(((x*n1)%n2)==code)
      {return 1}
      else {return 0};
    }


 

Die Lösung ist nicht ganz so einfach: Wir müssen wieder 1/n1 bestimmen.
Nun ist der richtige Exponent für ein Primzahlprodukt p1*p2 aber nicht p1*p2 - 1, sondern (p1-1)*(p2-1), wir müssen also die Primzahlzerlegung kennen.
Der wichtige Sicherheitsfaktor ist also, daß man zwar recht leicht zwei Primzahlen multiplizieren kann, daß es aber nicht so leicht ist, aus dem Produkt von zwei Primzahlen die Faktoren zu ermitteln.
Hier ists noch relativ einfach: 851 = 37 * 23, also ist der Exponent, mit dem wir die Inverse bestimmen 36*22= 792.
Wenn Sie nun noch 207^ 792 mod 851 bestimmt haben, ist die PIN geknackt. Die Lösung ist PIN = 55.