|
楼主 |
发表于 2018-3-2 16:19
|
显示全部楼层
引入类模块的概念,完成的加密代码。
RC4加密解密2.zip
(19.76 KB, 下载次数: 365)
Private s(255) As Long
Private X As Long, Y As Long
Private Sub Swap(ByVal i As Long, ByVal j As Long)
Dim t As Long
t = s(i)
s(i) = s(j)
s(j) = t
End Sub
Public Sub Init(ByRef nKey() As Long)
Dim i As Long, j As Long, nKeyLen As Long
X = 0
Y = 0
For i = 0 To 255
s(i) = CByte(i)
Next
j = 0
nKeyLen = UBound(nKey) + 1
For i = 0 To 255
j = (j + s(i) + nKey(i Mod nKeyLen)) And 255
Swap i, j
Next
End Sub
Public Sub InitZero(zf As String)
Dim nKey() As Long, zk() As Byte
zk = zf
ReDim nKey(0 To UBound(zk))
For i = 0 To UBound(zk)
nKey(i) = zk(i)
Next
Init nKey
End Sub
Public Function NextByte() As Long
X = (X + 1) And 255
Y = (Y + s(X)) And 255
Swap X, Y
NextByte = s((s(X) + s(Y)) And 255)
End Function
|
|