Mit Hilfe der hier beschriebenen Klasse cCrypt können Strings verschlüsselt und entschlüsselt werden. Es wird dabei Advanced Encryption Standard (AES) verwendet in der Bit-Stärke 256 oder 128 Bit. Benötigt wird das .NET Framework 3.5 oder höher! Klasse cCrypt Option Strict On Imports System.Security.Cryptography Public Class cCrypt #Region "Zustandsvariablen" Private EncryptedString_ As String Private DecryptedString_ As String #End Region Public Sub New() End Sub #Region "Methoden" ' Verschlüsseln Public Sub Encrypt(ByVal AESKeySize As Int32, _ ByVal DecryptedString As String, _ ByVal Password As String) ' Der Salt-Wert ist eine zufällig gewählte Zeichenfolge, ' wenn man so will ein zweites Passwort. ' Nur wer den Salt-Wert und das Passwort kennt, ' kann entschlüsseln. ' Durch Verwendung eines Salt-Wertes ist es deutlich ' schwerer das Passwort zu knacken. ' Wird das Passwort selber zur Erstellung des Salt-Wertes ' verwendet, muss dieses mindestens 8 Zeichen haben. Dim Salt() As Byte Salt = System.Text.Encoding.UTF8.GetBytes( _ "Salt-Wert_BitteBeiVerwendungDesCodesÄndern") ' Mit Hilfe des Passwortes und des Salt wird ein Key (Hash-Wert) ' generiert, der später zur Initialisierung des ' AES-Algorithmus verwendt wird. Dim GenerierterKey As New Rfc2898DeriveBytes(Password, Salt) ' Instanzierung des AES-Algorithmus-Objekts mit 256-bit ' oder 128-bit Schlüssel und 128-bit Block-Size Dim AES As New AesManaged AES.KeySize = AESKeySize ' möglich sind 256 oder 128 bit AES.BlockSize = 128 ' Algorithmus initialisieren: AES.Key = GenerierterKey.GetBytes(AES.KeySize \ 8) AES.IV = GenerierterKey.GetBytes(AES.BlockSize \ 8) ' Memory-Stream und Crypto-Stream erzeugen -> CreateEncryptor() Dim ms As New IO.MemoryStream Dim cs As New CryptoStream(ms, AES.CreateEncryptor(), _ CryptoStreamMode.Write) ' Daten verschlüsseln: Dim Data() As Byte Data = System.Text.Encoding.UTF8.GetBytes(DecryptedString) cs.Write(Data, 0, Data.Length) cs.FlushFinalBlock() cs.Close() ' Verschlüsselte Daten als String ausgeben: EncryptedString_ = Convert.ToBase64String(ms.ToArray) ms.Close() AES.Clear() End Sub ' Entschlüsseln Public Sub Decrypt(ByVal AESKeySize As Int32, _ ByVal EncryptedString As String, _ ByVal Password As String) ' Der Salt-Wert und das Passwort müssen mit dem übereinstimmen, ' das bei der Verschlüsselung verwendet wurde: Dim Salt() As Byte Salt = System.Text.Encoding.UTF8.GetBytes( _ "Salt-Wert_BitteBeiVerwendungDesCodesÄndern") Dim GenerierterKey As New Rfc2898DeriveBytes(Password, Salt) ' Instanzierung des AES-Algorithmus-Objekts: Dim AES As New AesManaged ' Ein mit 256 bit verschlüsselter String kann ' auch nur mit 256 bit entschlüsselt werden! AES.KeySize = AESKeySize ' möglich sind 256 oder 128 bit AES.BlockSize = 128 ' Algorithmus initialisieren: AES.Key = GenerierterKey.GetBytes(AES.KeySize \ 8) AES.IV = GenerierterKey.GetBytes(AES.BlockSize \ 8) ' Memory-Stream und Crypto-Stream erzeugen -> CreateDecryptor() Dim ms As New IO.MemoryStream Dim cs As New CryptoStream(ms, AES.CreateDecryptor(), _ CryptoStreamMode.Write) Try ' Daten entschlüsseln: Dim Data() As Byte Data = Convert.FromBase64String(EncryptedString) cs.Write(Data, 0, Data.Length) cs.FlushFinalBlock() cs.Close() ' Die entschlüsselten Daten als String ausgeben: DecryptedString_ = System.Text.Encoding.UTF8.GetString(ms.ToArray) ms.Close() AES.Clear() Catch ex As Exception DecryptedString_ = "Ungültiges Passwort!" End Try End Sub #End Region #Region "Eigenschaften" ReadOnly Property EncryptedString() As String Get Return EncryptedString_ End Get End Property ReadOnly Property DecryptedString() As String Get Return DecryptedString_ End Get End Property #End Region End Class Verwendung der Klasse cCrypt Benötigt wird ein Windows-Forms-Projekt mit folgenden Controls:
Private Sub Form1_Load(sender As Object, : e As System.EventArgs) Handles Me.Load txtDecrypt.Text = "Hallo" txtPassword.Text = "MeinPasswort" End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click If txtDecrypt.TextLength = 0 Then MsgBox("Es ist kein Text zum Verschlüsseln vorhanden.") Exit Sub End If ' Klasse cCrypt instanzieren zur Verschlüsselung Dim cCrypt As cCrypt = New cCrypt ' Text aus txtDecrypt verschlüsseln mit 256 bit: cCrypt.Encrypt(256, txtDecrypt.Text, txtPassword.Text) ' Verschlüsselten Text anzeigen: txtEncrypt.Text = cCrypt.EncryptedString txtDecrypt.Clear() End Sub Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click ' Klasse cCrypt instanzieren zur Entschlüsselung Dim cCrypt As cCrypt = New cCrypt ' Text aus txtEncrypt entschlüsseln mit 256 bit: cCrypt.Decrypt(256, txtEncrypt.Text, txtPassword.Text) ' Entschlüsselten Text anzeigen: txtDecrypt.Text = cCrypt.DecryptedString txtEncrypt.Clear() End Sub Dieser Tipp wurde bereits 41.468 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |