Cryptage / decryptage en rc4

Description

Voici un module de classe qui permet de crypter en utilisant l'algorithme RC4.

Voici le code de cette classe. Le ZIP contient aussi un formulaire pour dmontrer le fonctionnement.

Source / Exemple :


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

Conclusion :


Attention :
Apres un cryptage / decryptage, il faut redefinir le mot de passe pour reinitialiser la classe.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.