RC4-3鍔犲瘑绠楁硶
鍙戝竷: 2008-7-15 14:52 | 浣滆: 缃戠粶杞浇 | 鏉ユ簮: 缃戠粶杞浇 | 鏌ョ湅: 45娆
鍚嶇О:RC4-3鍔犲瘑绠楁硶
浣滆:Hot Rod,Doornbosch
鎻忚堪:鎴戜粠涓涓綉绔欒幏寰楄繖涓猂C4鐨勫姞瀵嗙畻娉曠▼搴忓苟灏嗗畠鍋氫簡閫傚綋鐨勪慨鏀广傚綋浣犲湪鍔犲瘑鐨勬椂鍊欙紝浣犲彲浠ユ寚瀹氫竴 涓瓧绗︺備絾鏄畠鐨勯熷害寰堟參锛屼簬鏄垜绉昏蛋浜嗙▼搴忎腑Xor鍛戒护锛岄熷害灏卞彉蹇簡锛屼絾鏄畠涓嶈兘搴旂敤浜庢暟鎹簱 涓
杈撳叆:闇瑕佸姞瀵嗙殑瀛楃涓插拰瀵嗙爜[鍔犲瘑(Ture)锛岃В瀵(False)]
杈撳嚭:缁忚繃RC4-3鍔犲瘑鐨勫瓧绗︿覆
娉ㄩ噴锛欽ob True = Encrypt, False = Decrypt
Dim Character() As String * 1
Function RC43(inp As String, key As String, Job As Boolean) As String
Dim S() As Byte
Dim K() As Byte
Dim i As Long
Dim j As Long
Dim temp As Byte
Dim Y As Byte
Dim t As Long
Dim x As Long
Dim Outp As String
Dim r As Integer
Dim TempOutPut As Integer
Dim HoldChar As String
Dim Length As Integer
On Error GoTo ErrorHandler:
HoldChar = " $(%&娉ㄩ噴锛*+,-)./0123456789:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~€銆侊骏銈π栤攩顏唵姘ㄦ袱鍚圭姱璐偅楠勫澐璋呭獨鐗屼鲸澧掗鑷闂插博閲夌僵妫曚粷鍦拤鍝欏緯娌呭綈鐜锋疀鑵辩湇闀宠辩瘽璨婇棘顙帺顟"
Length = Len(HoldChar)
ReDim Character(Length)
For x = 0 To (Length - 1)
Character(x) = Mid(HoldChar, (x + 1), 1)
Next x
ReDim S(Length)
ReDim K(Length)
For i = 0 To (Length - 1)
S(i) = i
Next
j = 1
For i = 0 To (Length - 1)
If j > Len(key) Then j = 1
K(i) = Ascii(Mid(key, j, 1))
j = j + 1
Next i
j = 0
For i = 0 To (Length - 1)
j = (j + S(i) + K(i)) Mod (Length)
temp = S(i)
S(i) = S(j)
S(j) = temp
Next i
i = 0
j = 0
For x = 1 To Len(inp)
i = (i + 1) Mod (Length)
j = (j + S(i)) Mod (Length)
temp = S(i)
S(i) = S(j)
S(j) = temp
t = (S(i) + (S(j) Mod (Length))) Mod (Length)
Y = S(t)
TempOutPut = (Ascii(Mid(inp, x, 1)))
If Job = False And (TempOutPut - Y) < 0 Then
TempOutPut = ((Length) + (TempOutPut - Y))
ElseIf Job = False Then
TempOutPut = (TempOutPut - Y)
End If
If Job = True Then
Outp = Outp & Character((TempOutPut + Y) Mod (Length))
Else
Outp = Outp & Character((TempOutPut) Mod (Length))
End If
Next
RC43 = Outp
Exit Function
ErrorHandler:
MsgBox "Error # " & vbCrLf & Error & vbCrLf & "Outp = " & Outp & vbCrLf & "Character = " & Character(hold) & vbCrLf & "Ascii = " & hold2 & vbCrLf & "Y = " & Y, , "Error"
End Function
Function Ascii(value As String) As Byte
娉ㄩ噴锛欶ind Value in Character Must be used instead of asc because some characters are eliminated
x = 0
While Not Character(x) = value
x = x + 1
Wend
Ascii = (x)
End Function




发表于 2009-1-5 19:48
| 











