Cryptage / decryptage en rc4

Soyez le premier à donner votre avis sur cette source.

Vue 11 509 fois - Téléchargée 1 005 fois

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

Ajouter un commentaire Commentaires
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
8 août 2004 à 13:25
que ce soit du RC4 ou non, merci car c'est juste ce que je cherchai ; crypter et décrypter un string :-)
cygen Messages postés 4 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 5 mars 2004
22 déc. 2003 à 14:33
On peut t'envoyer un email ??? pour des renseignements.
lolo32 Messages postés 36 Date d'inscription mercredi 13 février 2002 Statut Membre Dernière intervention 6 juin 2006
22 déc. 2003 à 13:39
Je suis en train de le traduire en C et en C++ (utilisation de classe)
cygen Messages postés 4 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 5 mars 2004
19 déc. 2003 à 15:14
Je serais curieux de voir le même programme en C, possiblité de transcription si'l vous plaît ?? :) en ce qui concerne ce code en vb il fontionne merveilleusement bien.
lolo32 Messages postés 36 Date d'inscription mercredi 13 février 2002 Statut Membre Dernière intervention 6 juin 2006
28 déc. 2002 à 10:09
C'est normal.
Le tableau d'octet est recomposé à partir de la clé. Or, celui-ci est constitué à partir de la clé. Si la clé ne contient que les mêmes lettre, le cryptage sera identique. ainsi, tu obtiendra le même résultat avec la clé A ou avec la clé AAAAAAAAAAAAAAAAAAAAAAAA.
C'est le cryptage qui est fait ainsi.
Afficher les 16 commentaires

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.