- Option Explicit
-
- ' Classe permettant de coder du texte en utilisant l'algorithme RC4.
- '
- ' Utilisation :
- '
- ' Dim XYZ As New Crypt_RC4
- ' XYZ.Key = "Mot de passe"
- ' TexteCrypt = XYZ.Crypt("Texte a crypter")
- '
- ' XYZ.Key = "Mot de passe"
- ' TexteDcrypt = XYZ.Decrypt("Texte a dcrypter")
- '
- ' Nb: Il faut reinitialiser le mot de passe avant de Crypter / Decrypter une nouvelle fois
-
- Private S(0 To 255) As Long
- Private I As Long
- Private J As Long
-
- Public Property Let Key(ByVal Key As String)
- Dim Longueur As Long, T As Long
- Longueur = Len(Key)
- For I = 0 To 255
- S(I) = I
- Next I
-
- J = 0
- For I = 0 To 255
- J = (J + S(I) + Asc(Mid$(Key, I Mod Longueur + 1, 1))) And 255&
- T = S(I)
- S(I) = S(J)
- S(J) = T
- Next I
- I = 0
- J = 0
- End Property
-
- Public Function Crypt(ByVal Param As String) As String
- Dim Longueur As Long, C As Long, T As Long
- Longueur = Len(Param)
- For C = 1 To Longueur
- I = (I + 1) And 255&
- J = (J + S(I)) And 255&
- T = S(I)
- S(I) = S(J)
- S(J) = T
-
- T = (S(I) + S(J)) And 255&
-
- Mid$(Param, C, 1) = Chr$(Asc(Mid$(Param, C, 1)) Xor S(T))
- Next C
- Crypt = Param
- End Function
-
- Public Function Decrypt(ByVal Param As String) As String
- Dim Longueur As Long, C As Long, T As Long
- Longueur = Len(Param)
- For C = 1 To Longueur
- I = (I + 1) And 255&
- J = (J + S(I)) And 255&
- T = S(I)
- S(I) = S(J)
- S(J) = T
-
- T = (S(I) + S(J)) And 255&
-
- Mid$(Param, C, 1) = Chr$(Asc(Mid$(Param, C, 1)) Xor S(T))
- Next C
- Decrypt = Param
- End Function
Option Explicit
' Classe permettant de coder du texte en utilisant l'algorithme RC4.
'
' Utilisation :
'
' Dim XYZ As New Crypt_RC4
' XYZ.Key = "Mot de passe"
' TexteCrypt = XYZ.Crypt("Texte a crypter")
'
' XYZ.Key = "Mot de passe"
' TexteDcrypt = XYZ.Decrypt("Texte a dcrypter")
'
' Nb: Il faut reinitialiser le mot de passe avant de Crypter / Decrypter une nouvelle fois
Private S(0 To 255) As Long
Private I As Long
Private J As Long
Public Property Let Key(ByVal Key As String)
Dim Longueur As Long, T As Long
Longueur = Len(Key)
For I = 0 To 255
S(I) = I
Next I
J = 0
For I = 0 To 255
J = (J + S(I) + Asc(Mid$(Key, I Mod Longueur + 1, 1))) And 255&
T = S(I)
S(I) = S(J)
S(J) = T
Next I
I = 0
J = 0
End Property
Public Function Crypt(ByVal Param As String) As String
Dim Longueur As Long, C As Long, T As Long
Longueur = Len(Param)
For C = 1 To Longueur
I = (I + 1) And 255&
J = (J + S(I)) And 255&
T = S(I)
S(I) = S(J)
S(J) = T
T = (S(I) + S(J)) And 255&
Mid$(Param, C, 1) = Chr$(Asc(Mid$(Param, C, 1)) Xor S(T))
Next C
Crypt = Param
End Function
Public Function Decrypt(ByVal Param As String) As String
Dim Longueur As Long, C As Long, T As Long
Longueur = Len(Param)
For C = 1 To Longueur
I = (I + 1) And 255&
J = (J + S(I)) And 255&
T = S(I)
S(I) = S(J)
S(J) = T
T = (S(I) + S(J)) And 255&
Mid$(Param, C, 1) = Chr$(Asc(Mid$(Param, C, 1)) Xor S(T))
Next C
Decrypt = Param
End Function