WaBis

walter.bislins.ch

Coder: Anwendung

Coder : Download | Anwendung | Funktionen

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 )
%>

Das Coder-Modul stellt ein globales Object Coder der Klasse CCoder zur Verfügung, über welches die beiden Funktionen EncodeString und DecodeString aufgerufen werden können.

Im obigen Beispiel sind am Ende die beiden Strings original und decoded wieder identisch.

Passwort setzen

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.

Coder erzeugen

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)

Einfache Verschlüsselung

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:

Randomisierte Verschlüsselung

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:

Anwendung der Randomisierten Verschlüsselung

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.

Checksumme

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.

Unicode

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.

Weitere Infos zur Seite
Erzeugt Montag, 18. August 2008
von wabis
Zum Seitenanfang
Geändert Sonntag, 6. Dezember 2015
von wabis