moe123: quelltext verschlüsseln?!

gibt es eine wirklich effektive methode seinen quellcode zu verschlüsseln? meine jetzt nicht so lächerliche js oder ascii tricks und was es sonst noch gibt.

habe versucht meinen webserver anzuweisen html dateien ebenfalls mit php zu parsen, scheint aber nicht wirklich zu funktionieren.

jemand ne idee?

  1. Hi,

    gibt es eine wirklich effektive methode seinen quellcode zu verschlüsseln?

    ja. Dann kann sie natürlich auch der Browser nicht mehr lesen.

    jemand ne idee?

    Warum zum Teufel willst Du den Code verhackstückeln? Was versprichst Du Dir davon?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Moin,

    Hast du schon mal im Archiv gesucht?

    gruss

    --
    no strict;
    no warnings;
    79.78 cups of Coffee (Brewed) + Me = Death
    Reklame ist die Kunst, auf den Kopf zu zielen und die Brieftasche zu treffen.
  3. gibt es eine wirklich effektive methode seinen quellcode zu verschlüsseln?

    Wozu wenn ich fragen darf? Weil du soooooo tollen Quelltext schreibst, dass du am liebsten Lizenzgebühren hättest, wenn jemand auch nur das Ergebnis bewundern will??????

    Wieso darf denn niemand von dir lernen? Wenn Stefan Münz sein Wissen auch (im übertragenen Sinn) "verschlüsselt" hätte, wär das für dich wahrscheinlich auch nicht gerade toll...

    jemand ne idee?

    Selbst wenn ich eine hätte, ich würde sie dir nicht sagen...

    Aber denk doch mal ganz logisch: Der Browser braucht den Quelltext, um die Seite darzustellen. Also muss der Quelltext doch irgendwie auf dem Client landen.

    sTm

    1. Hi,

      Wozu wenn ich fragen darf? Weil du soooooo tollen Quelltext schreibst, dass du am liebsten Lizenzgebühren hättest, wenn jemand auch nur das Ergebnis bewundern will??????

      Wieso darf denn niemand von dir lernen?

      also, ganz im Ernst: Wer seinen Quelltext verschlüsseln will, hat erfahrungsgemäß einen solchen produziert, von dem niemand lernen sollte.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. also, ganz im Ernst: Wer seinen Quelltext verschlüsseln will, hat erfahrungsgemäß einen solchen produziert, von dem niemand lernen sollte.

        Da könnetst du Recht haben...

        Zum Thema: Ich habe einmal damit begonnen, XHTML 1.1-konform zu editieren. Jetzt will ich gar keine Transitional-Versionen mehr verwenden, denn eine XHTML 1.1-Seite lässt sich nachträglich wegen der Übersicht viel besser nachbearbeiten.

        Grüße,
        sTm

        1. Hi!

          Zum Thema: Ich habe einmal damit begonnen, XHTML 1.1-konform zu editieren.

          Warum XHTML 1.1 und nicht XHTML 1.0 strict?

          Gruß aus Iserlohn

          Martin

          1. Hi,

            Warum XHTML 1.1 und nicht XHTML 1.0 strict?

            wieso meinst du...?

            Grüße,
            sTm

            1. Hi,

              Warum XHTML 1.1 und nicht XHTML 1.0 strict?
              wieso meinst du...?

              weil XHTML/1.1 in der Praxis an mangelnder Unterstützung seitens "gewisser" Browser scheitert. Der zwingend benötigte Content-Type: application/xml+xhtml beispielsweise wird vom IE nicht unterstützt.

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. Hi!

                Warum XHTML 1.1 und nicht XHTML 1.0 strict?
                wieso meinst du...?
                weil XHTML/1.1 in der Praxis an mangelnder Unterstützung seitens "gewisser" Browser scheitert. Der zwingend benötigte Content-Type: application/xml+xhtml beispielsweise wird vom IE nicht unterstützt.

                Ausserdem wirst du kaum die Modularisierung oder Ruby Annotations nutzen, somit entfällt jeder Grund, 1.1 statt strict zu nutzen (ausser natürlich das cool sein).

                Gruß aus Iserlohn

                Martin

                1. Tach auch,

                  Ausserdem wirst du kaum die Modularisierung (...) nutzen

                  Nicht unbedingt. Auf Dauer habe ich vor, ein bisschen was mit XSL rumzutricksen, und da wäre die Modularisierung wieder erforderlich, oder...?

                  sTm

              2. Hi,

                weil XHTML/1.1 in der Praxis an mangelnder Unterstützung seitens "gewisser" Browser scheitert.

                Microsoft als zukunftsweisendes Unternehmen ist mal wieder Vorreiter (wenn auch nicht unbedingt in positiver Hinsicht ;-) )

                Der zwingend benötigte Content-Type: application/xml+xhtml beispielsweise wird vom IE nicht unterstützt.

                Ah so, jetzt weiß ich was du meinst. Diese echt coole Meldung, die mir die Seiten zum Download anbietet, richtig? Jo, die find ich auch klasse...

                Aber das wusste ich nicht, dass text/html für XHTML 1.1 nicht verwendet werden darf, ich mach's einfach trotzdem, und der Validator meckert auch nicht rum. Ist das schlimm???

                Wirklich klasse finde ich auch, dass unser geliebter IE bei der (in XHTML 1.1 ja erforderlichen) XML-Deklaration zum Quirks wechselt, da er die DTD in Zeile 1 erfordert. Schlau. Aber da gibt's ja glücklicherweise die Browserweiche mit <!--[if IE]> blub <![endif]-->, mit der man wieder Box-Modell-Fehler beheben kann...

                sTm

                1. Tach,

                  Aber das wusste ich nicht, dass text/html für XHTML 1.1 nicht verwendet werden darf, ich mach's einfach trotzdem, und der Validator meckert auch nicht rum. Ist das schlimm???

                  ja, außer du hast die vollständigen Folgen deines Handelns komplett verstanden, aber dann würdest du nicht mehr fragen müssen. Viel schlimmer ist allerdings, dass du scheinbar drei Fragen stellen wolltest, aber nur eine angekommen ist.

                  mfg
                  Woodfighter

                  1. Hi,

                    Viel schlimmer ist allerdings, dass du scheinbar drei Fragen stellen wolltest, aber nur eine angekommen ist.

                    Ne, aber diese Frage lag mir wie drei Fragen am Herzen ;-)

                    sTm

  4. Hi,

    gibt es eine wirklich effektive methode seinen quellcode zu verschlüsseln?

    Abba seffaständlich!

      
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
    <head>  
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  
    <title>Verschl&uuml;sselung mit Javascript</title>  
    <!--  
     * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message  
     * Digest Algorithm, as defined in RFC 1321.  
     * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.  
     * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet  
     * Distributed under the BSD License  
     * See http://pajhome.org.uk/crypt/md5 for more info.  
    -->  
    <script type="text/javascript" src="md5-rfc1321.js"></script>  
      
    <!--  
     * A JavaScript implementation of the Secure Hash Standard  
     * Version 0.3 Copyright Angel Marin 2003-2004 - http://anmar.eu.org/  
     * Distributed under the BSD License  
     * Some bits taken from Paul Johnston's SHA-1 implementation  
     *  
    -->  
    <!--  
    &gt;script type="text/javascript" src="sha2-256.js">&gt;/script>  
    -->  
    <!--  
      Or any other kind of function able to map input to sth  
      usefull to be put in a Javascript string directly.  
      The one I used was the table based base64 implementation  
      of Masanao Izumo <mo@goice.co.jp> at  
      http://www.onicos.com/staff/iz/amuse/javascript/expert/base64.txt  
    -->  
    <script type="text/javascript" src="MISC-JAVSCRIPT/base64.js"></script>  
      
    <script type="text/javascript">  
    //<!--  
    /*  
      Several global variables.  
    */  
    javascriptHeader =  
    '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\  
    <html><head><meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">\  
    <title>Do not forget to place your title here or it will end quite\  
    embarassing for you</title>';  
      
    javascriptDecryptionPartOne =  
    '<script type="text/javascript" src="md5-rfc1321.js"></script>\  
    <script type="text/javascript" src="MISC-JAVSCRIPT/base64.js"></script>\  
    <script type="text/javascript">\  
    function MD5(s){return core_md5(str2binl(s),s.length*chrsz);}\  
    function decryptXtea(message,md5Key){var m=new Array(2);message=decodeBase64(message);\  
    var len=message.length;var result="";for(var i=0;i<len;i=i+8){m[0]^= 0x00000000;\  
    m[1]^=0x00000000;var sum=0xC6EF3720;var delta=0x9E3779B9;m[0]=message.charCodeAt(i);\  
    m[0]|=message.charCodeAt(i+1)<<8;m[0]|=message.charCodeAt(i+2)<<16;\  
    m[0]|=message.charCodeAt(i+3)<<24;m[1]=message.charCodeAt(i+4);\  
    m[1]|=message.charCodeAt(i+5)<<8;m[1]|=message.charCodeAt(i+6)<<16;\  
    m[1]|=message.charCodeAt(i+7)<<24;m[0]=m[0]&0xFFFFFFFF;m[1]=m[1]&0xFFFFFFFF;\  
    for(var j=0;j<32;j++){m[1]-=(((m[0]<<4^m[0]>>5)+m[0])^(sum+md5Key[sum>>11&3])\  
    )&0xFFFFFFFF;sum=(sum-delta)&0xFFFFFFFF;m[0]-=(((m[1]<<4^m[1]>>5)+m[1])\  
    ^(sum+md5Key[sum&3]))&0xFFFFFFFF;}result+=String.fromCharCode(((m[0]&0x000000FF))&0xFF);\  
    result+=String.fromCharCode(((m[0]&0x0000FF00)>>8)&0xFF);result+=String.fromCharCode\  
    (((m[0]&0x00FF0000)>>16)&0xFF);result+=String.fromCharCode(((m[0]&0xFF000000)>>24)\  
    &0xFF);result+=String.fromCharCode(((m[1]&0x000000FF))&0xFF);result+=\  
    String.fromCharCode(((m[1]&0x0000FF00)>>8)&0xFF);result+=String.fromCharCode(((m[1]\  
    &0x00FF0000)>>16)&0xFF);result+=String.fromCharCode(((m[1]&0xFF000000)>>24)&0xFF);}\  
    return result;}\  
    function formSubmit(user, pass){\  
    var md5key = MD5(pass);\  
    document.write(decryptXtea("';  
      
    javascriptDecryptionPartTwo =  
    '",md5key));document.close();}\  
    </script></head><form id="encryptformular" name="encryptformular"\  
    onsubmit="formSubmit(this.form.username.value,this.form.password.value);\  
    return false">Benutzername (wird hier nicht benutzt):<br><input name="username" id="username" type="text" size="50"\  
    maxlength="50" /><br>Passwort:<br><input name="password" id="password"\  
    type="password" size="50" maxlength="50" /><br><input name="decryptbutton"\  
    id="decryptbutton" type="button" value="Decrypt" onclick=\  
    "formSubmit(this.form.username.value,this.form.password.value);return false"/></form>\  
    </html>';  
    //-->  
    /*  
      There exists another MD5-implementation by Henri Torgemane  
      and Ralf Mieke, which uses the "original" namespace from  
      RFC 1321. But that implementation reduces the input to ASCII  
      without obvious need and reason.  
      Just comment the wrapper underneath out if you have to  
      use that implementation.  
    */  
      
    function MD5(s){  
      return core_md5(str2binl(s), s.length * chrsz);  
    }  
      
    /*  
      We use the MD5-algorithm as a simple hashfunktion.  
      MD5 as a cryptographical hashfunction must be considered  
      broken today, so many will doubt the innocence of  
      MD5 if used as a simple hashfunction only. There is an  
      implementation of SHA2(256) in Javascript available at  
      http://anmar.eu.org/projects/jssha2/ (3-C-BSD-Licence)  
      
      Reducing the 32 bytes to 16 bytes is done quite simply  
      by XORing the first 16 bytes wih the second 16 bytes.  
      
      Not yet tested, just written down.  
      
    function MD5(s){  
      
      var hash = new Array(8);  
      var ret  = new Array(4);  
      
      hash = core_sha256(str2binb(s),s.length * chrsz);  
      for(var i=0;i<4;i++){  
        ret[i] = ((hash[i]&0xFFFFFFFF)^(hash[7-i]&0xFFFFFFFF))&0xFFFFFFFF;  
      }  
      
      return ret;  
    }  
      
    */  
      
    /*  
      The additional data for the HMAC would be  
      the username in this case. Not used here  
      it's just a suggestion.  
      
    function HMAC_MD5(s,t){  
      return core_hmac_md5(s, t);  
    }  
    */  
      
    /*  
      The XTEA algorithm used here is based on the first  
      example of the modification of Needham/Wheeler  
      published in "Tea extensions" (1996-97).  
    */  
    function encryptXtea(message,md5Key){  
      /*  
        for comments see decryptXtea()  
        underneath.  
      */  
      var m      = new Array(2);  
      
      var len    = message.length;  
      var result = "";  
      
      for(var i=0; i < len; i = i+8){  
        m[0] ^= 0x00000000;  
        m[1] ^= 0x00000000;  
      
        var sum    = 0x0;  
        var delta  = 0x9E3779B9;  
      
        m[0]  = message.charCodeAt(i);  
        m[0] |= message.charCodeAt(i+1) << 8;  
        m[0] |= message.charCodeAt(i+2) << 16;  
        m[0] |= message.charCodeAt(i+3) << 24;  
        m[1]  = message.charCodeAt(i+4);  
        m[1] |= message.charCodeAt(i+5) << 8;  
        m[1] |= message.charCodeAt(i+6) << 16;  
        m[1] |= message.charCodeAt(i+7) << 24;  
      
      
        m[0] = m[0] & 0xFFFFFFFF;  
        m[1] = m[1] & 0xFFFFFFFF;  
      
        for(var j = 0; j < 32; j++){  
          m[0] += (  ((m[1]<<4 ^ m[1]>>5) + m[1])  
                    ^ (sum + md5Key[sum & 3])  
                  ) & 0xFFFFFFFF;  
      
          sum = (sum + delta) & 0xFFFFFFFF;  
      
          m[1] += ( ((m[0]<<4 ^ m[0]>>5) + m[0])  
                   ^ (sum + md5Key[sum>>11 & 3])  
           ) & 0xFFFFFFFF;  
        }  
        result += String.fromCharCode((m[0]&0x000000FF));  
        result += String.fromCharCode((m[0]&0x0000FF00) >>  8);  
        result += String.fromCharCode((m[0]&0x00FF0000) >> 16);  
        result += String.fromCharCode((m[0]&0xFF000000) >> 24);  
        result += String.fromCharCode((m[1]&0x000000FF));  
        result += String.fromCharCode((m[1]&0x0000FF00) >>  8);  
        result += String.fromCharCode((m[1]&0x00FF0000) >> 16);  
        result += String.fromCharCode((m[1]&0xFF000000) >> 24);  
      }  
      return encodeBase64(result);  
    }  
      
    
    

    Der fehlende Rest steht im nächstem Posting.

    so short

    Christoph Zurnieden

    1. Hi,

        
        
      function decryptXtea(message,md5Key){  
        /*  
          Now we asume: a lot.  
          We asume: eight bits in a byte  
          We asume: 2s-complement encoding  
          We asume: message.length % 8 = 0  
          We asume: the same endianes in encryption and decryption  
          We asume: nobody reads this comment  
        */  
        
        var m      = new Array(2);  
        
        message    =  decodeBase64(message);  
        var len    = message.length;  
        var result = "";  
        
        for(var i=0; i < len; i = i+8){  
          /* I could just brag a bit here  
             and babble sybilline about  
             "loop unrolling by hand" or sth.  
             But I don't. I think it's a better  
             idea to write useless comments  
             instead of useless loops. */  
        
          m[0] ^= 0x00000000;  
          m[1] ^= 0x00000000;  
        
          var sum    = 0xC6EF3720;  
          var delta  = 0x9E3779B9;  
        
          m[0]  = message.charCodeAt(i);  
          m[0] |= message.charCodeAt(i+1) << 8;  
          m[0] |= message.charCodeAt(i+2) << 16;  
          m[0] |= message.charCodeAt(i+3) << 24;  
          m[1]  = message.charCodeAt(i+4);  
          m[1] |= message.charCodeAt(i+5) << 8;  
          m[1] |= message.charCodeAt(i+6) << 16;  
          m[1] |= message.charCodeAt(i+7) << 24;  
        
          m[0] = m[0] & 0xFFFFFFFF;  
          m[1] = m[1] & 0xFFFFFFFF;  
        
          for(var j = 0; j < 32; j++){  
            m[1] -= ( ((m[0]<<4 ^ m[0]>>5) + m[0])  
                     ^ (sum + md5Key[sum>>11 & 3])  
             ) & 0xFFFFFFFF;  
        
            sum   = (sum - delta) & 0xFFFFFFFF;  
        
            m[0] -= ( ((m[1]<<4 ^ m[1]>>5) + m[1])  
                     ^ (sum + md5Key[sum & 3])  
                    ) & 0xFFFFFFFF;  
          }  
          result += String.fromCharCode(((m[0]&0x000000FF))&0xFF);  
          result += String.fromCharCode(((m[0]&0x0000FF00) >>  8)&0xFF);  
          result += String.fromCharCode(((m[0]&0x00FF0000) >> 16)&0xFF);  
          result += String.fromCharCode(((m[0]&0xFF000000) >> 24)&0xFF);  
          result += String.fromCharCode(((m[1]&0x000000FF))&0xFF);  
          result += String.fromCharCode(((m[1]&0x0000FF00) >>  8)&0xFF);  
          result += String.fromCharCode(((m[1]&0x00FF0000) >> 16)&0xFF);  
          result += String.fromCharCode(((m[1]&0xFF000000) >> 24)&0xFF);  
        }  
        return result;  
      }  
        
      /*  
        Converts a string of 8-bit-bytes into  
        their hexadecimal values.  
      */  
      function toHexString(s){  
       var ret = "";  
       var len = s.length;  
        
       for (var i = 0;i < len; i++) {  
         //ret += (i % 8 == 0)?" ":"";  
         ret += (s.charCodeAt(i)&0xFF).toString(16);  
       }  
       return ret;  
      }  
        
        
      function formSubmit(user, pass, pass2){  
        var md5Key   = new Array(4);  
        
        var formO    = document.forms[0];  
        
        var xteaPadding = 0;  
        
        var taOrigO   = formO.textareaoriginal;  
        var md5OrigO  = formO.md5sumoriginal;  
        var taEncO    = formO.textareaencrypted;  
        var md5EncO   = formO.md5sumencrypted;  
        var taDecO    = formO.textareadecrypted;  
        var md5DecO   = formO.md5sumdecrypted;  
        var md5Orig2O = formO.md5sumoriginal2;  
        
        var encryptedString = "";  
        
        /*  
          Most little endian machines fullfill the conditions  
          mentioned in decryptXtea(), a test might be usefull.  
        */  
        var tmpEndian = 1 >>> 1;  
        if(tmpEndian != 0){  
          alert(   "Hey, it's only me: a poor 'n lonely"  
                 + "algorithm who can't afford to run on"  
          + "better stuff than cheap PC-hardware!" );  
        }  
        
        if(user == "" || pass == "" || pass2 == ""){  
          alert("Bitte "  
                 + ((user == "" )?"Benutzername":  
             (pass == "" )?"Passwort":"Passwort zweimal")  
          + " eingeben, danke.");  
          return;  
        }  
        if(taOrigO.value.length < 1){  
          alert("Bitte auch etwas zum verschlüsseln eingeben, danke.");  
          return  
        }  
        if(pass != pass2){  
          return;  
        }  
        /*  
          XTEA's keysize is a DWORD. The MD5 hash  
          conveniently provides that size.  
        */  
        md5Key   = MD5(pass);  
        
        /*  
          Padding with spaces (ASCII 0x20)  
         */  
        while(taOrigO.value.length & 0x7){  
          taOrigO.value = taOrigO.value + " ";  
          /*  
            In most cases, a padding with spaces at the end  
            does not matter at all. A cryptographic signing  
            should in any case calculate the pure text and  
            none of the formating at all.  
            But, as I said above: only in _most_ cases.  
          */  
          xteaPadding   = taOrigO.value.length & 0x7;  
        }  
        taEncO.value = "";  
        md5OrigO.value = hex_md5(taOrigO.value);  
        
        encryptedString = encryptXtea(taOrigO.value,md5Key);  
        
        taEncO.value =   javascriptHeader  
                       + javascriptDecryptionPartOne  
         + encryptedString  
                       + javascriptDecryptionPartTwo;  
        
        md5EncO.value = hex_md5(taEncO.value);  
        taDecO.value = decryptXtea(encryptedString,md5Key);  
        md5DecO.value = hex_md5(taDecO.value);  
        md5Orig2O.value = md5OrigO.value;  
      }  
        
      function resetForm(){  
        document.encryptformular.reset();  
      }  
      //resetForm;  
      </script>  
      <style type="text/css">  
      fieldset{  
               padding: 1em;  
               margin-top: 1em;  
        width:25em;  
        border: 1px solid black;  
              }  
      legend  {  
               border: 1px solid black;  
              }  
      </style>  
      </head>  
      <h1>Verschl&uuml;sselung mit Javascript</h1>  
        
      <form id="encryptformular"  
            name="encryptformular"  
            onsubmit="formSubmit(this.form.username.value,  
                                 this.form.password.value,  
            this.form.password2.value);return false">  
      <fieldset><legend>Schl&uuml;ssel</legend>  
      Benutzername (wird hier nicht benutzt):<br>  
      <input name="username"  
             id="username"  
             type="text"  
             size="50"  
             maxlength="50" /><br>  
      Passwort:<br>  
      <input name="password"  
             id="password"  
             --type="password"--  
             type="text"  
             size="50"  
             maxlength="50" /><br>  
      Repeat passwort:<br>  
      <input name="password2"  
             id="password2"  
             --type="password"--  
             type="text"  
             size="50"  
             maxlength="50" /><br>  
      </fieldset>  
      <fieldset><legend>Originalnachricht</legend>  
      <textarea name="textareaoriginal" id="textareaoriginal" cols="80" rows="10"></textarea><br>  
      MD5SUM des Originals:<br>  
      <input name="md5sumoriginal"  
             id="md5sumoriginal"  
             type="text"  
             size="50"  
             maxlength="50" /><br>  
      </fieldset>  
        
      <fieldset><legend>Verschl&uuml;sselt</legend>  
      <textarea name="textareaencrypted"  id="textareaencrypted"cols="80" rows="10"></textarea><br>  
      MD5SUM der verschl&uuml;sselten Nachricht:<br>  
      <input name="md5sumencrypted"  
             id="md5sumencrypted"  
             type="text"  
             size="50"  
             maxlength="50" /><br>  
      </fieldset>  
        
      <fieldset><legend>Entschl&uuml;sselt</legend>  
      <textarea name="textareadecrypted" id="textareadecrypted" cols="80" rows="10"></textarea><br>  
      MD5SUM der entschl&uuml;sselten Nachricht:<br>  
      <input name="md5sumdecrypted"  
             id="md5sumdecrypted"  
             type="text"  
             size="50"  
             maxlength="50" /><br>  
      MD5SUM der originalen Nachricht war:<br>  
      <input name="md5sumoriginal2"  
             id="md5sumoriginal2"  
             type="text"  
             size="50"  
             maxlength="50" /><br>  
      </fieldset>  
      <input name="searchbutton"  
             id="searchbutton"  
             type="button"  
             value="Fertig!"  
             onclick="formSubmit(this.form.username.value,  
                                 this.form.password.value,  
            this.form.password2.value);"/>  
      <input name="resetbutton"  
             id="resetbutton"  
             type="button"  
             value="Reset"  
             onclick="resetForm();"/><br>  
        
      </form>  
      </html>  
        
      
      

      so short

      Christoph Zurnieden