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.522 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. |
sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |