Imports System.Security.Cryptography Imports System.Text Public Class ClassPasswordCrypto Private _password As String ' ++++++++++++++++++++++++++++++++++++++++++++++ Properties ++++++++++++++++++++++++++++++++++++++++++++++ ''' ''' Liefert das Passwort zum Entschlüsseln des Lizenzschlüssels ''' ''' ''' ''' Public ReadOnly Property Password() As String Get Return Me._password End Get End Property ' ++++++++++++++++++++++++++++++++++++++++++++++ Methoden ++++++++++++++++++++++++++++++++++++++++++++++ ''' ''' Konstruktor für den Lizenz-Manager ohne License load ''' ''' Passwort zum Entschlüsseln des Lizenzkeys ''' Sub New(ByVal password As String) Me._password = password End Sub ''' ''' Codiert eine Zeichenkette ''' ''' zu verschlüsselnde Zeichenkette ''' das zur Verschlüsselung verwendete Passwort ''' liefert eine verschlüsselte Zeichenkette ''' Public Function EncodePassword(ByVal str As String, ByVal password As String) Dim rd As New RijndaelManaged Dim md5 As New MD5CryptoServiceProvider Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(password)) md5.Clear() rd.Key = key rd.GenerateIV() Dim iv() As Byte = rd.IV Dim ms As New IO.MemoryStream ms.Write(iv, 0, iv.Length) Dim cs As New CryptoStream(ms, rd.CreateEncryptor, CryptoStreamMode.Write) Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes(str) cs.Write(data, 0, data.Length) cs.FlushFinalBlock() Dim encdata() As Byte = ms.ToArray() Dim result As String = Convert.ToBase64String(encdata) cs.Close() rd.Clear() Return result End Function ''' ''' Decodiert den verschlüsselten Lizenzkey ''' ''' verschlüsselter Lizenzkey ''' ''' Public Function DecodePassword(ByVal licenseCodeStr As String) Try Dim rd As New RijndaelManaged Dim rijndaelIvLength As Integer = 16 Dim md5 As New MD5CryptoServiceProvider Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(Me._password)) md5.Clear() Dim encdata() As Byte Dim ms Dim iv(15) As Byte Dim cs As CryptoStream Dim data() As Byte Try encdata = Convert.FromBase64String(licenseCodeStr) ms = New IO.MemoryStream(encdata) ms.Read(iv, 0, rijndaelIvLength) rd.IV = iv rd.Key = key cs = New CryptoStream(ms, rd.CreateDecryptor, CryptoStreamMode.Read) ReDim data(ms.Length - rijndaelIvLength) Catch ex As Exception Return Nothing End Try Dim i As Integer = 0 Try i = cs.Read(data, 0, data.Length) Dim result As String = System.Text.Encoding.UTF8.GetString(data, 0, i) cs.Close() rd.Clear() Return result Catch ex As Exception 'MsgBox("Falsches Passwort") Return Nothing End Try Catch ex As Exception End Try 'MsgBox("Falsches Passwort") Return Nothing End Function End Class