initial commit
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
Imports System.Text
|
||||
|
||||
Public Class rc4
|
||||
Public Shared Function rc4(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