Files
DarioS 054d21c625 Icarus 2.4j2 :
- migliorie e correzioni varie.
2022-10-11 09:45:49 +02:00

109 lines
3.9 KiB
VB.net

Imports System.Security.Cryptography
Imports System.Text
Public Module EgwCrypto
Public Function DecryptString(ByVal Message As String, ByVal Passphrase As String) As String
Dim answ As String = Message
Dim Results As Byte() = Nothing
Dim UTF8 As UTF8Encoding = New UTF8Encoding()
Dim HashProvider As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
Dim TDESKey As Byte() = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase))
Dim TDESAlgorithm As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider()
TDESAlgorithm.Key = TDESKey
TDESAlgorithm.Mode = CipherMode.ECB
TDESAlgorithm.Padding = PaddingMode.PKCS7
Dim DataToDecrypt As Byte() = Nothing
Try
DataToDecrypt = Convert.FromBase64String(Message)
Catch
End Try
If DataToDecrypt IsNot Nothing Then
Try
Dim Decryptor As ICryptoTransform = TDESAlgorithm.CreateDecryptor()
Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length)
Finally
TDESAlgorithm.Clear()
HashProvider.Clear()
End Try
answ = UTF8.GetString(Results)
End If
Return answ
End Function
Public Function EncryptString(ByVal Message As String, ByVal Passphrase As String) As String
Dim Results As Byte()
Dim UTF8 As UTF8Encoding = New UTF8Encoding()
Dim HashProvider As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
Dim TDESKey As Byte() = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase))
Dim TDESAlgorithm As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider()
TDESAlgorithm.Key = TDESKey
TDESAlgorithm.Mode = CipherMode.ECB
TDESAlgorithm.Padding = PaddingMode.PKCS7
Dim DataToEncrypt As Byte() = UTF8.GetBytes(Message)
Try
Dim Encryptor As ICryptoTransform = TDESAlgorithm.CreateEncryptor()
Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length)
Finally
TDESAlgorithm.Clear()
HashProvider.Clear()
End Try
Return Convert.ToBase64String(Results)
End Function
Public Function PowerEncryptString(ByVal Message As String, ByVal Passphrase As String) As String
Static Generator As System.Random = New System.Random()
Dim sTransformMessage As String = Generator.Next(10000000, 99999999).ToString() & Message & Generator.Next(10000000, 99999999).ToString()
Return EncryptString(sTransformMessage, Passphrase)
End Function
Public Function PowerDecryptString(ByVal Message As String, ByVal Passphrase As String) As String
Dim sTransformMessage As String = DecryptString(Message, Passphrase)
If sTransformMessage.Length() >= 16 Then
Return sTransformMessage.Substring(8, sTransformMessage.Length - 16)
Else
Return ""
End If
End Function
'Public Function getHashStringMD5(ByVal Message As String) As String
' Dim hash As String = ""
' Using md5Hash As MD5 = MD5.Create()
' hash = GetMd5Hash(md5Hash, Message)
' End Using
' Return hash
'End Function
'Public Function GetMd5Hash(ByVal md5Hash As MD5, ByVal input As String) As String
' Dim data As Byte() = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input))
' Dim sBuilder As StringBuilder = New StringBuilder()
' For i As Integer = 0 To data.Length - 1
' sBuilder.Append(data(i).ToString("x2"))
' Next
' Return sBuilder.ToString()
'End Function
'Public Function VerifyMd5Hash(ByVal md5Hash As MD5, ByVal input As String, ByVal hash As String) As Boolean
' Dim hashOfInput As String = GetMd5Hash(md5Hash, input)
' Dim comparer As StringComparer = StringComparer.OrdinalIgnoreCase
' If 0 = comparer.Compare(hashOfInput, hash) Then
' Return True
' Else
' Return False
' End If
'End Function
End Module