054d21c625
- migliorie e correzioni varie.
109 lines
3.9 KiB
VB.net
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
|