[VB6] Sichere Verschlüsselung (Vernam-Algorithmus)

Immer wieder wird gefragt, wie sich ein Text sicher verschlüsseln lässt – und Verschlüsselungsalgorithmen gibt es wie Sand am Meer. Aber sind diese auch sicher?

Um auf Nummer sicher zu gehen, sollten Sie eine “reine” Vernam-Verschlüsselung anwenden. Dort wird ebenfalls XOR verwendet. Allerdings wird jedes Zeichen des Klartextes nur mit EINEM Zeichen des Passwortes verschlüsselt. Unter der Annahme, dass jedes Passwort-Zeichen echt zufällig gewählt wurde, das Passwort genauso lang ist wie der Klartext und das Passwort nur einmal verwendet wird, ist dieses Verfahren sogar nachgewiesenermaßen das einzig bekannte absolut sichere Verfahren.

Für die Verschlüsselung nach Vernam können Sie folgende Funktion benutzen:

' Sicherer Textverschlüsselung
Public Function VernamCode(sOriginal As String, _
  sPassword As String) As String
 
  Dim i As Long
  Dim aktpos As Long
  Dim bAkt As Byte
  Dim bCode As Byte
 
  VernamCode = ""
 
  ' Passwort auf die Länge des Klartextes bringen
  ' Dazu wird z.B. aus "Geheim" dann "GeheimGeheimGehe...."
  aktpos = 1
  For i = Len(sPassword) + 1 To Len(sOriginal)
    sPassword = sPassword & Mid(sPassword, aktpos, 1)
    aktpos = aktpos + 1
    If aktpos > Len(sPassword) Then aktpos = 1
  Next i
 
  For i = 1 To Len(sOriginal)
    bAkt = Asc(Mid(sOriginal, i, 1))
    bCode = Asc(Mid(sPassword, i, 1))
 
    VernamCode = VernamCode & Chr(bAkt Xor bCode)
  Next i
End Function

Beispiel für den Einsatz von VernamCode:

' String verschlüsseln
Dim sOriginal As String
Dim sPassword As String
Dim sCode As String
 
sOriginal = "vb@rchiv"
sPassword = "geheim"
 
sCode = VernamCode(sOriginal, sPassword)
MsgBox sCode

Um wieder zu entschlüsseln:

' und wieder entschlüsseln
sOriginal = VernamCode(sCode, sPassword)