Replaced all license management classes (ClassLicense, ClassLicenses, ClassLicenseManager) with a new ClassPasswordCrypto for password encryption/decryption using Rijndael (AES). Updated all usages to call EncodePassword/DecodePassword instead of license key methods. Removed obsolete license-related code and files from the project. Incremented assembly version to 2.10.4.0. Cleaned up imports and updated the project file to reflect these changes. No license logic remains; only password crypto is handled.
129 lines
3.7 KiB
VB.net
129 lines
3.7 KiB
VB.net
Imports System.Security.Cryptography
|
|
Imports System.Text
|
|
|
|
Public Class ClassPasswordCrypto
|
|
|
|
Private _password As String
|
|
|
|
' ++++++++++++++++++++++++++++++++++++++++++++++ Properties ++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
''' <summary>
|
|
''' Liefert das Passwort zum Entschlüsseln des Lizenzschlüssels
|
|
''' </summary>
|
|
''' <value></value>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Public ReadOnly Property Password() As String
|
|
Get
|
|
Return Me._password
|
|
End Get
|
|
End Property
|
|
|
|
' ++++++++++++++++++++++++++++++++++++++++++++++ Methoden ++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
''' <summary>
|
|
''' Konstruktor für den Lizenz-Manager ohne License load
|
|
''' </summary>
|
|
''' <param name="password">Passwort zum Entschlüsseln des Lizenzkeys</param>
|
|
''' <remarks></remarks>
|
|
Sub New(ByVal password As String)
|
|
Me._password = password
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' Codiert eine Zeichenkette
|
|
''' </summary>
|
|
''' <param name="str">zu verschlüsselnde Zeichenkette</param>
|
|
''' <param name="password">das zur Verschlüsselung verwendete Passwort</param>
|
|
''' <returns>liefert eine verschlüsselte Zeichenkette</returns>
|
|
''' <remarks></remarks>
|
|
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
|
|
|
|
''' <summary>
|
|
''' Decodiert den verschlüsselten Lizenzkey
|
|
''' </summary>
|
|
''' <param name="licenseCodeStr">verschlüsselter Lizenzkey</param>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
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
|