RC4算法的实现思想是什么

MrShen 2002-12-21 06:42:41
RC4算法的实现思想是什么,它是如何实现的?
...全文
148 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
oswica 2002-12-21
  • 打赏
  • 举报
回复
feixuehenshui 2002-12-21
  • 打赏
  • 举报
回复
我顶
shawls 2002-12-21
  • 打赏
  • 举报
回复
[名称] RC4-3加密算法

[数据来源] 未知

[内容简介] 空

[源代码内容]

RC4-3加密算法
作者:Hot Rod,Doornbosch
描述:我从一个网站获得这个RC4的加密算法程序并将它做了适当的修改。当你在加密的时候,你可以指定一个字符。但是它的速度很慢,于是我移走了程序中Xor命令,速度就变快了,但是它不能应用于数据库中。
输入:需要加密的字符串和密码[加密(True),解密(False)]
输出:经过RC4-3加密的字符串

注释:Job 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
注释:Find 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


以上代码保存于: SourceCode Explorer(源代码数据库)
复制时间: 2002-12-21 下午 06:51:46
软件版本: 1.0.799
软件作者: Shawls
个人主页: Http://Shawls.Yeah.Net
E-Mail: ShawFile@163.Net
QQ: 9181729

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧