Cryptage / decryptage en rc4

Soyez le premier à donner votre avis sur cette source.

Vue 10 942 fois - Téléchargée 935 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

Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1
que ce soit du RC4 ou non, merci car c'est juste ce que je cherchai ; crypter et décrypter un string :-)
Messages postés
4
Date d'inscription
mardi 18 novembre 2003
Statut
Membre
Dernière intervention
5 mars 2004

On peut t'envoyer un email ??? pour des renseignements.
Messages postés
36
Date d'inscription
mercredi 13 février 2002
Statut
Membre
Dernière intervention
6 juin 2006

Je suis en train de le traduire en C et en C++ (utilisation de classe)
Messages postés
4
Date d'inscription
mardi 18 novembre 2003
Statut
Membre
Dernière intervention
5 mars 2004

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.
Messages postés
36
Date d'inscription
mercredi 13 février 2002
Statut
Membre
Dernière intervention
6 juin 2006

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.