62 lines
2.3 KiB
VB.net
62 lines
2.3 KiB
VB.net
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
|
||
|
|
|