Sixem

.NET Polymorphic RC4

Jun 24th, 2013
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 3.34 KB | None | 0 0
  1.  Public Shared Function PolyRC4Encrypt(ByVal message As String, ByVal pass As String) As String
  2.         message = x(message, pass)
  3.         Dim random As New Random()
  4.         Dim list1 As New ArrayList(), list2 As New ArrayList()
  5.         Dim out As String = ""
  6.         Dim num1 As Integer = random.[Next](1, 10255)
  7.         For i As Integer = 0 To message.Length - 1
  8.             Dim num2 As Integer = random.[Next](num1)
  9.             list1.Add(Convert.ToInt32(message(i)) + num2)
  10.             list2.Add(num2)
  11.         Next
  12.         For j As Integer = 0 To message.Length - 1
  13.             out += ChrW(list1(j)) & ChrW(list2(j))
  14.         Next
  15.  
  16.         Return out
  17.     End Function
  18.     Public Shared Function PolyRC4Decrypt(ByVal message As String, ByVal pass As String) As String
  19.  
  20.         Dim numArray As Integer() = New Integer(message.Length - 1) {}
  21.         Dim temp As String = ""
  22.  
  23.         For i As Integer = 0 To message.Length - 1
  24.             numArray(i) = Convert.ToInt32(message(i))
  25.         Next
  26.  
  27.         For j As Integer = 0 To message.Length - 1 Step 2
  28.             Dim num3 As Integer = numArray(j)
  29.             Dim num4 As Integer = numArray(j + 1)
  30.             Dim num5 As Integer = num3 - num4
  31.             temp = temp + ChrW(num5)
  32.         Next
  33.         Return x(temp, pass)
  34.     End Function
  35.     Public Shared Function x(ByVal nGeeKnK As String, ByVal eKieBrN As String) As String
  36.         Dim oHgeIrT As Integer = 0
  37.         Dim rErnEoE As Integer = 0
  38.         Dim rEeiRfF As New StringBuilder
  39.         Dim nJrnJgL As String = String.Empty
  40.         Dim bIjeGnR As Integer() = New Integer(256) {}
  41.         Dim nBjvRbE As Integer() = New Integer(256) {}
  42.         Dim gEgeGnE As Integer = eKieBrN.Length
  43.         Dim fBjeEgE As Integer = 0
  44.         While fBjeEgE <= 255
  45.             Dim fGrjEnG As Char = (eKieBrN.Substring((fBjeEgE Mod gEgeGnE), 1).ToCharArray()(0))
  46.             nBjvRbE(fBjeEgE) = Microsoft.VisualBasic.Strings.Asc(fGrjEnG)
  47.             bIjeGnR(fBjeEgE) = fBjeEgE
  48.             System.Math.Max(System.Threading.Interlocked.Increment(fBjeEgE), fBjeEgE - 1)
  49.         End While
  50.         Dim vHbrDnG As Integer = 0
  51.         Dim jPkkXjV As Integer = 0
  52.         While jPkkXjV <= 255
  53.             vHbrDnG = (vHbrDnG + bIjeGnR(jPkkXjV) + nBjvRbE(jPkkXjV)) Mod 256
  54.             Dim nCokVrH As Integer = bIjeGnR(jPkkXjV)
  55.             bIjeGnR(jPkkXjV) = bIjeGnR(vHbrDnG)
  56.             bIjeGnR(vHbrDnG) = nCokVrH
  57.             System.Math.Max(System.Threading.Interlocked.Increment(jPkkXjV), jPkkXjV - 1)
  58.         End While
  59.         fBjeEgE = 1
  60.         While fBjeEgE <= nGeeKnK.Length
  61.             Dim rErrTnE As Integer = 0
  62.             oHgeIrT = (oHgeIrT + 1) Mod 256
  63.             rErnEoE = (rErnEoE + bIjeGnR(oHgeIrT)) Mod 256
  64.             rErrTnE = bIjeGnR(oHgeIrT)
  65.             bIjeGnR(oHgeIrT) = bIjeGnR(rErnEoE)
  66.             bIjeGnR(rErnEoE) = rErrTnE
  67.             Dim rHgeHgH As Integer = bIjeGnR((bIjeGnR(oHgeIrT) + bIjeGnR(rErnEoE)) Mod 256)
  68.             Dim fGrjEnG As Char = nGeeKnK.Substring(fBjeEgE - 1, 1).ToCharArray()(0)
  69.             rErrTnE = Asc(fGrjEnG)
  70.             Dim vRbTKeR As Integer = rErrTnE Xor rHgeHgH
  71.             rEeiRfF.Append(Chr(vRbTKeR))
  72.             System.Math.Max(System.Threading.Interlocked.Increment(fBjeEgE), fBjeEgE - 1)
  73.         End While
  74.         nJrnJgL = rEeiRfF.ToString
  75.         rEeiRfF.Length = 0
  76.         Return nJrnJgL
  77.     End Function
Advertisement
Add Comment
Please, Sign In to add comment