源码:
VB版rc4算法 Public Sub main()
Dim key As String
For i = 1 To 16
Randomize
key = key & Chr(Rnd * 255)
Next i
MsgBox RC4(RC4("Welcome To Plindge Studio!", key), key)
End Sub
Public Function RC4(inp As String, key As String) As String
Dim S(0 To 255) As Byte, K(0 To 255) As Byte, i As Long
Dim j As Long, temp As Byte, Y As Byte, t As Long, x As Long
Dim Outp As String For i = 0 To 255
S(i) = i
Nextj = 1
For i = 0 To 255
If j > Len(key) Then j = 1
K(i) = Asc(Mid(key, j, 1))
j = j + 1
Next ij = 0
For i = 0 To 255
j = (j + S(i) + K(i)) Mod 256
temp = S(i)
S(i) = S(j)
S(j) = temp
Next ii = 0
j = 0
For x = 1 To Len(inp)
i = (i + 1) Mod 256
j = (j + S(i)) Mod 256
temp = S(i)
S(i) = S(j)
S(j) = temp
t = (S(i) + (S(j) Mod 256)) Mod 256
Y = S(t)Outp = Outp & Chr(Asc(Mid(inp, x, 1)) Xor Y)
Next
RC4 = Outp
End Function
谢啦!
VB版rc4算法 Public Sub main()
Dim key As String
For i = 1 To 16
Randomize
key = key & Chr(Rnd * 255)
Next i
MsgBox RC4(RC4("Welcome To Plindge Studio!", key), key)
End Sub
Public Function RC4(inp As String, key As String) As String
Dim S(0 To 255) As Byte, K(0 To 255) As Byte, i As Long
Dim j As Long, temp As Byte, Y As Byte, t As Long, x As Long
Dim Outp As String For i = 0 To 255
S(i) = i
Nextj = 1
For i = 0 To 255
If j > Len(key) Then j = 1
K(i) = Asc(Mid(key, j, 1))
j = j + 1
Next ij = 0
For i = 0 To 255
j = (j + S(i) + K(i)) Mod 256
temp = S(i)
S(i) = S(j)
S(j) = temp
Next ii = 0
j = 0
For x = 1 To Len(inp)
i = (i + 1) Mod 256
j = (j + S(i)) Mod 256
temp = S(i)
S(i) = S(j)
S(j) = temp
t = (S(i) + (S(j) Mod 256)) Mod 256
Y = S(t)Outp = Outp & Chr(Asc(Mid(inp, x, 1)) Xor Y)
Next
RC4 = Outp
End Function
谢啦!
解决方案 »
- 请教下EXCEL导入ACCESS时用进度条显示(导入的进度)问题
- 高中毕业,vb程序员,canon ,1000去不去做 困惑
- 在VB中如何用代码实现窗口随分辩率大小而自动变化?
- 怎样给数字加逗号分隔符
- 请问GetProp和SetProp两函数是干什么用的
- CB如何向VB转型?需要具备什么条件?做什么准备?看什么书?
- 怎么用代码判断本机是否已经联在局域网内,而且连接正常。在线等
- 这是数据类型的问题吗?text类型有何不一样的地方?请高手帮忙了,一定给分!
- 用vb6打开一个IE浏览器窗口打开一网址,怎么监视其地址栏的变化
- VB中怎样回放录音?
- VB-Script+sc.addcode涉及到的function
- MSComm一次发多条指令,接受多条返回数据
Dim S(0 To 255) As Byte, K(0 To 255) As Byte, i As Long
Dim j As Long, temp As Byte, Y As Byte, t As Long, x As Long
Dim Outp As StringFor i = 0 To 255
S(i) = i
Nextj = 1
For i = 0 To 255
If j > LenB(key) Then j = 1
K(i) = AscB(MidB(key, j, 1))
j = j + 1
Next ij = 0
For i = 0 To 255
j = (j + S(i) + K(i)) Mod 256
temp = S(i)
S(i) = S(j)
S(j) = temp
Next ii = 0
j = 0
For x = 1 To LenB(inp)
i = (i + 1) Mod 256
j = (j + S(i)) Mod 256
temp = S(i)
S(i) = S(j)
S(j) = temp
t = (S(i) + (S(j) Mod 256)) Mod 256
Y = S(t)Outp = Outp & ChrB(AscB(MidB(inp, x, 1)) Xor Y)
Next
RC4 = Outp
End Function
比如说明文为“zhrshe”,key为“zhr”解密后的明文错误。最后说声抱歉,由于有事耽搁了,到现在才来结贴。
谢谢你的热心回答!