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