Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03537.jsonl.gz/1686

Die Anwendung des Coder-Objektes ist denkbar einfach:
<% Option Explicit %> <!--#include file="perf.inc" --> <!--#include file="coder.inc" --> <% dim original, encoded, decoded original = "Irgendein Text" : encoded = Coder.EncodeString( original, false ) : decoded = Coder.DecodeString( encoded, false ) %>
Im obigen Beispiel sind am Ende die beiden Strings original und decoded wieder identisch.
Im globalen Objekt Coder ist ein Standard-Passwort gesetzt, aus welchem der 128-Bit Schlüssel generiert wird. Mit der Funktion SetPassword kann jedoch ein eigenes Passwort gesetzt werden, aus dem ein neuer 128-Bit Schlüssel generiert wird:
Coder.SetPassword "MySecurePassword" : encoded = Coder.EncodeString( original, false ) decoded = Coder.DecodeString( encoded, false )
Damit verschlüsselte Strings wieder korrekt entschlüsselt werden können, muss für beide Funktionen dasselbe Passwort, d.h. derselbe Schlüssel verwendet werden. Das Passwort setzt man am besten so früh wie möglich, auf jeden Fall vor dem Aufruf der ersten Verschlüsselungs-/Entschlüsselungs-Funktion.
Statt nur einem globalen Coder-Objekt können beliebig viele unabhängige Coder-Objekte erzeugt und verwendet werden. Jedes Coder-Objekt kann mit einem eigenen Schlüssel verschlüsseln:
dim coder1, coder2 set coder1 = new CCoder coder1.SetPassword "MyPassword1" set coder2 = new CCoder coder2.SetPassword "MyPassword2" dim str, encoded1, encoded2 str = "Any Text" encoded1 = coder1.EncodeString(str,false) encoded2 = coder2.EncodeString(str,false)
Wird bei EncodeString als zweiter Parameter Randomize = false angegeben, so wird der gleiche String immer indentisch codiert, vorausgesetzt es wird dasselbe Passwort verwendet. Dies ist kryptographisch nicht optimal, da bei bekanntem String unter Umständen auf den Schlüssel geschlossen werden könnte und damit andere gleichlange Strings entschlüsselt werden könnten.
Die einfache Verschlüsselung arbeitet so, dass derselbe Buchstabe nicht denselben Code erzeugt. Der voranstehende Buchstabe wird in die Verschlüsselung einbezogen. Damit kann man mit statistischen Verfahren den Originaltext nicht ermitteln.
Die Einfache Verschlüsselung ist für das Verschlüsseln von Variablennamen gedacht. derselbe Variablenname muss verschlüsselt immer denselben String ergeben. Einfache Verschlüsselung wird von folgeden Funktionen verwendet:
Wenn bei EncodeString Randomize = true angegeben wird, so wird der Schlüssel bei jedem Aufruf mit einer Zufallszahl neu generiert. Dadurch entsteht bei jeder Verschlüsselung des selben Strings jedesmal ein anderer Code. So ist es nicht möglich, auf den verwendeten Schlüssel zu schliessen und den Code zu knacken. Es werden mehr als 16000 verschiedene Schlüssel zufällig generiert. Welcher dieser möglichen Schlüssel für das Verschlüsseln verwendet wurde, steht natürlich verschlüsselt im Code, damit das Decodieren möglich ist.
Die Randomisierte Verschlüsselung ist für das Verschlüsseln von Variablen-Werten gedacht. Randomisierte Verschlüsselung wird bei den folgenden Funktionen verwendet:
Cookies und Session-Variablen werden ständig zwischen Browser und Server hin und her geschickt. In Cookies kann man zum Beispiel Daten von Formularen speichern, damit diese Daten während einer Sitzung über mehrere Seiten verfügbar bleiben oder gar über eine Sitzung hinaus. Damit nun das Stehlen eines Cookies das Ausspionieren von Daten verunmöglicht, werden Cookie-Werte Randomisiert verschlüsselt. Zusätzlich werden die Variablennamen einfach verschlüsseln, sodass durch Lesen des Cookie-Files nicht auf die Art der Daten geschlossen werden kann. Dasselbe gilt für Session-Variablen.
Damit Manipulationen an verschlüsselten Variablen-Werten erkannt werden, werden die randomisiert verschlüsselten Werte zusätzlich mit einer Checksumme versehen. Diese Checksumme wird beim Entschlüsseln überprüft. Die folgenden Funktionen versehen den Code mit einer Checksumme:
Die Länge der Checksumme kann über das Property ChecksumSize eingestellt werden. Standardwert ist 3 Zeichen a 4 Bit, also 12 Bit.
VBScript arbeitet intern mit 16-Bit Unicode. Jedes Zeichen in einem String wird also mit 16-Bit codiert. Wenn nur ASCII (7-Bit) oder ANSI Zeichen (8-Bit) verwendet werden, hat das höherwertige Byte eines Zeichens immer den Wert 0. Coder codiert nun einen String so, dass jedes ASCII- oder ANSI-Zeichen mit zwei Buchstaben im Bereich A-P codiert wird. Unicode-Zeichen, deren höherwertiges Byte nicht 0 ist (zum Beispiel das Euro-Zeichen) werden mit 4 Buchstaben codiert, wobei beim höherwertigen Byte Kleinbuchstaben a-p zur Anwendung kommen.