Imports System.Text Public Class PXOR Private regKey As String = "" Public Property Key() As String Get Return regKey End Get Set(ByVal value As String) regKey = value End Set End Property Public Sub New(ByVal Key As String) Me.Key = Key End Sub Public Sub New() Me.Key = "" End Sub Public Function PolyCrypt(ByVal Data As String) As String Return Encoding.Default.GetString(PolyCrypt(Encoding.Default.GetBytes(Data))) End Function Public Function PolyDeCrypt(ByVal Data As String) As String Return Encoding.Default.GetString(PolyDeCrypt(Encoding.Default.GetBytes(Data))) End Function Public Function PolyCrypt(ByVal Data() As Byte) As Byte() Dim ReturnBuffer(Data.Length) As Byte ReturnBuffer(0) = Convert.ToByte(New Random().Next(1, 255)) For i = 0 To Data.Length - 1 ReturnBuffer(i + 1) = ModuloByte(ReturnBuffer(i), Data(i)) Next Return XorCrypt(ReturnBuffer, Encoding.Default.GetBytes(Key)) End Function Public Function PolyDeCrypt(ByVal Data() As Byte) As Byte() Data = XorCrypt(Data, Encoding.Default.GetBytes(Key)) Dim ReturnBuffer(Data.Length - 2) As Byte For i = Data.Length - 1 To 1 Step -1 ReturnBuffer(i - 1) = ModuloByte(Data(i), -Data(i - 1)) Next Return ReturnBuffer End Function Private Function ModuloByte(ByVal MyByte As Byte, ByVal Addition As Int16) As Byte While Addition < 0 Addition += 256 End While Return Convert.ToByte((MyByte + Addition) Mod 256) End Function Private Function XorCrypt(ByVal Data() As Byte, ByVal Key() As Byte) As Byte() If Key.Length <> 0 Then For i = 0 To Data.Length - 1 Data(i) = Data(i) Xor ModuloByte(Key(i Mod Key.Length), [Key](Key(i Mod Key.Length) Mod Key.Length)) Xor [Key](((i + (i Mod 7)) Mod Key.Length) Mod Key.Length) Next End If Return Data End Function Public Function XorCrypt(ByVal Data As String, ByVal Key As String) As String Return Encoding.Default.GetString(XorCrypt(Encoding.Default.GetBytes(Data), Encoding.Default.GetBytes(Key))) End Function End Class