vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Algorithmen/Mathematik   |   VB-Versionen: VB4, VB5, VB623.01.02
String mit Passwort verschlüsseln II

Zwei nützliche Funktionen, um einen String in Verbindung mit einem Passwort zu ver- und wieder entschlüsseln.

Autor:   Thomas HoffmannBewertung:  Views:  48.664 
www.maccoffice.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Mit diesem Code kann man einen String mit Hilfe eines Schlüssels (Passwort) ver- bzw. entschlüsseln. Die Funktionen eignen sich z.B. zum verschlüsselten Speichern von Passwörtern innerhalb Dateien oder der Windows-Registry.

Die hier vorgestellte Verschlüsselungs-Routine arbeitet zwar etwas langsamer als über eine XOR-Verschlüsselung, jedoch sind dafür alle ASCII-Zeichen zulässig.

Um die Ver- und Entschlüsselungsfunktion im gesamten Projekt verwenden zu können, empfiehlt es sich die nachfolgenden Funktionen in ein Modul auszulagern.

' Text in Verbindung mit einem Passwort verschlüsseln
Public Function EncodeString(ByVal strToEncode As String, _
  ByVal strPassword As String) As String
 
  Dim strResult As String
  Dim i As Long
  Dim cfc() As Integer
 
  ReDim cfc(1 To Len(strPassword))
 
  For i = 1 To UBound(cfc)
    cfc(i) = Asc(Right(strPassword, _
      Len(strPassword) - i + 1))
  Next i
 
  For i = 1 To Len(strToEncode)
    strResult = strResult & _
      Chr(addToIndex(Asc(Right(strToEncode, _
      Len(strToEncode) - i + 1)), VirtPos(i, cfc)))
  Next i
 
  EncodeString = strResult
End Function
' Text in Verbindung mit einem Passwort entschlüsseln
Public Function DecodeString(ByVal strToDecode As String, _
  ByVal strPassword As String) As String
 
  Dim strResult As String
  Dim i As Long
  Dim cfc() As Integer
 
  ReDim cfc(1 To Len(strPassword))
  ReDim ttc(1 To Len(strToDecode))
 
  For i = 1 To UBound(cfc)
    cfc(i) = Asc(Right(strPassword, _
      Len(strPassword) - i + 1))
  Next i
 
  For i = 1 To Len(strToDecode)
    strResult = strResult & _
      Chr(GetOfIndex(Asc(Right(strToDecode, _
      Len(strToDecode) - i + 1)), VirtPos(i, cfc)))
  Next i
 
  DecodeString = strResult
End Function
' Hilfsfunktionen
Private Function VirtPos(i As Long, _
  a() As Integer) As Integer
 
  If i > UBound(a) Then
    VirtPos = VirtPos(i - UBound(a), a)
  Else
    VirtPos = a(i)
  End If
End Function
 
Private Function addToIndex(i As Integer, _
  j As Integer) As Integer
 
  If i + j > 255 Then
    addToIndex = i + j - 255
  Else
    addToIndex = i + j
  End If
End Function
 
Private Function GetOfIndex(i As Integer, _
  j As Integer) As Integer
 
  If i - j < 0 Then
    GetOfIndex = i - j + 255
  Else
    GetOfIndex = i - j
  End If
End Function

Beispiel
Plazieren Sie auf die Form drei Textboxen (txtToEncode, txtPassword und txtResult), sowie zwei Command-Buttons (cmdEncode und cmdDecode). Beim Klicken auf den ersten CommandButton wird der Text in txtToEncode in Verbindung mit dem in txtPassword eingetragenen Passwort verschlüsselt und in der TextBox txtResult angezeigt. Beim Klicken auf den zweiten CommandButton wird der Ergebnis-Text wieder entschlüsselt und ebenfalls in txtResult angezeigt.

Private Sub cmdEncode_Click()
  ' Verschlüsseln
  txtResult.Text = EncodeString(txtToEncode.Text, _
    txtPassword.Text)
End Sub
 
Private Sub cmdDecode_Click()
  ' Entschlüsseln
  txtResult.Text = DecodeString(txtResult.Text, _
    txtPassword.Text)
End Sub



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.