Rubrik: Variablen/Strings · String-Operationen | VB-Versionen: VB4, VB5, VB6 | 27.02.01 |
Strings in Verb. mit einem Passwort verschlüsseln Dieser Tipp zeigt, wie man einen String in Verbindung mit einem bestimmten Passwort verschlüsseln und wieder entschlüssel kann. | ||
Autor: LonelySuicide666 | Bewertung: | Views: 24.422 |
www.vbapihelpline.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Unser heutiger Tipp zeigt, wie man einen String in Verbindung mit einem bestimmten Passwort verschlüsseln und wieder entschlüssel kann.
' String verschlüsseln Public Function VerEntschlüsseln(ByVal SrcString As String, _ ByVal Pass As String) As String On Error Resume Next Dim TmpInt As Integer, I, J Dim TmpArray() As Integer ReDim TmpArray(1 To Len(Pass)) ' Ascii Codes des Passwortes in ein Array Speichern For I = 1 To Len(Pass) TmpArray(I) = Asc(Mid$(Pass, I, 1)) Next I ' Verschlüsselungs-Prozedur ' Jeden Buchstaben einzeln verschlüsseln For I = 1 To Len(SrcString) ' Für jeden Passwortbuchstaben einmal verschlüsseln ' Buchstaben in Ascii-Wert umwandeln TmpInt = Asc(Mid$(SrcString, I, 1)) For J = 1 To Len(Pass) ' und mit Xor binär umwandeln TmpInt = TmpInt Xor TmpArray(J) ' zur Sicherheit nocheimal binär umwandeln (Xor) TmpInt = TmpInt Xor J Next J ' Das Null-Zeichen kann in einer TextBox ' nicht angezeigt werden If TmpInt > 0 Then ' Binär-Wert wieder in Ascii-Zeichen umwandeln VerEntschlüsseln = VerEntschlüsseln & Chr$(TmpInt) Else ' sonst Null-Zeichen-Konstante einfügen VerEntschlüsseln = VerEntschlüsseln & "%$0$%" End If Next I End Function
Wie funktioniert das jetzt?
Ascii-Zeichen werden intern als Zahlen angegeben (0-255) und Zahlen werden intern als Bits angegeben (z.B. 100 = 00000100). Zunächst wird das Ascii-Zeichen in einen String umgewandelt. Man erhält dann eine Zahl (z.B. Buchstabe a = 97). Als nächstes wird die Xor-Funktion verwendet. Die Xor-Funktion vergleicht ein oder mehrere Bits miteinander und gibt für jedes gleiche Bit eine 1 zurück, bzw. für jedes ungleiche Bit eine 0. So ergibt z.B. die Anweisung 00000100 Xor 00000011 das Ergebnis 11111000 (nur die ersten 5 Bits sind gleich (alles Nullen)). Das ganze erfolgt durch den Aufruf Xor automatisch. Man übergibt einfach 2 Zahlen, z.B. 1 Xor 2 und erhält als Ergebnis 3. Ruft man dann 1 Xor 3 auf, so erhält man als Ergebnis 2, bzw. bei 2 Xor 3 das Ergebnis 1. Dieser Vorgang wird in der Funktion zweimal angewandt (doppelte Verschlüsselung). Jedes einzelne Zeichen des Quellstrings wird 2-mal mit jedem Zeichen des Passwort verschlüsselt. Ist also das Passwort 10 Zeichen lang, wird jeder Buchstabe des Quellstrings 20 mal verschlüsselt, was u.U. aber auch sehr viel Zeit kosten kann.
Beispiel:
' String verschlüsseln Dim source As String Dim password As String Dim code As String source = "www.vbarchiv.de" password = "vbArchiv" code = VerEntschlüsseln(source, password)
Die Variable Code enthält nun den verschlüsselten Textstring. Um diesen wieder zu entschlüsseln, rufen Sie einfach die Funktion VerEntschlüsseln erneut auf, jedoch nun mit der Variable Code.
' String entschlüsseln source = VerEntschlüsseln(code, password)