Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB4, VB5, VB6 | 12.07.02 |
Sichere Verschlüsselung (Vernam-Algorithmus) Mit dem Vernam-Verschlüsselungsverfahren gehen Sie auf Nummer sicher - das ist sogar nachgewiesen. | ||
Autor: Thomas Theiner | Bewertung: | Views: 37.833 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
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?
Die Verschlüsselung selbst erfolgt oftmals in Verbindung mit einem Passwort. Hierzu finden Sie in der Tipps & Tricks Rubrik bereits verschiedene Verfahren.
String mit Password verchlüsseln II
Strings in Verb. mit einem Passwort verschlüsseln
Um jedoch 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.
' 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
' und wieder entschlüsseln sOriginal = VernamCode(sCode, sPassword)