Public Class PolyRC4 Private Key As String = "sad87x6zucigedsjfguycxtiu4e75689374-w24098sdfhj-324iuysdjfbhsdjf" Sub New(ByVal EncryptionKey As String) Key = EncryptionKey End Sub Public Function Encrypt(ByVal message As String) As String message = XX(message, Key) Dim random As New Random() Dim list1 As New System.Collections.ArrayList(), list2 As New System.Collections.ArrayList() Dim out As String = "" Dim num1 As Integer = random.[Next](1, 10255) For i As Integer = 0 To message.Length - 1 Dim num2 As Integer = random.[Next](num1) '(&H7A) + &H44 list1.Add(Convert.ToInt32(message(i)) + num2) list2.Add(num2) Next For j As Integer = 0 To message.Length - 1 out += ChrW(list1(j)) & ChrW(list2(j)) Next Return out End Function Public Function Decrypt(ByVal message As String) As String Dim numArray As Integer() = New Integer(message.Length - 1) {} Dim temp As String = "" For i As Integer = 0 To message.Length - 1 numArray(i) = Convert.ToInt32(message(i)) Next For j As Integer = 0 To message.Length - 1 Step 2 Dim num3 As Integer = numArray(j) Dim num4 As Integer = numArray(j + 1) Dim num5 As Integer = num3 - num4 temp = temp + ChrW(num5) Next Return XX(temp, Key) End Function Public Shared Function XX(ByVal message As String, ByVal password As String) As String Dim i As Integer = 0 Dim j As Integer = 0 Dim cipher As New StringBuilder Dim returnCipher As String = String.Empty Dim sbox As Integer() = New Integer(256) {} Dim key As Integer() = New Integer(256) {} Dim intLength As Integer = password.Length Dim a As Integer = 0 While a <= 255 Dim ctmp As Char = (password.Substring((a Mod intLength), 1).ToCharArray()(0)) key(a) = Microsoft.VisualBasic.Strings.Asc(ctmp) sbox(a) = a System.Math.Max(System.Threading.Interlocked.Increment(a), a - 1) End While Dim x As Integer = 0 Dim b As Integer = 0 While b <= 255 x = (x + sbox(b) + key(b)) Mod 256 Dim tempSwap As Integer = sbox(b) sbox(b) = sbox(x) sbox(x) = tempSwap System.Math.Max(System.Threading.Interlocked.Increment(b), b - 1) End While a = 1 While a <= message.Length Dim itmp As Integer = 0 i = (i + 1) Mod 256 j = (j + sbox(i)) Mod 256 itmp = sbox(i) sbox(i) = sbox(j) sbox(j) = itmp Dim k As Integer = sbox((sbox(i) + sbox(j)) Mod 256) Dim ctmp As Char = message.Substring(a - 1, 1).ToCharArray()(0) itmp = Asc(ctmp) Dim cipherby As Integer = itmp Xor k cipher.Append(Chr(cipherby)) System.Math.Max(System.Threading.Interlocked.Increment(a), a - 1) End While returnCipher = cipher.ToString cipher.Length = 0 Return returnCipher End Function End Class