initial commit
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
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
|
||||
Reference in New Issue
Block a user