Methode de chiffrement de vigenère, cryptage (fonction)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 389 fois - Téléchargée 29 fois

Contenu du snippet

Petite fonction permettant de crypter et decrypter une chaine, je me suis inpirer de la methode de chiffrement de Vigenère. http://www.commentcamarche.net/crypto/vigenere.php3

J'espere que cette fonction vous sera utile, et vous allez l'ameliorer pour la rendre plus puissante ;-)

Source / Exemple :


Private Function Crypt(ByVal strChaine As String, blnCryptage As Boolean) As String
  Dim I, J, K As Integer
  Dim strCryptKey As String
  Dim strLettre As String
  Dim strKeyLettre As String
  Dim intLettre As Long
  Dim intKeyLettre As Long
  Dim strResultat As String
  
  If strChaine = "" Then
    Crypt = ""
    Exit Function
  End If
  
  strCryptKey = "chiffrement de Vigenere"
  
  For K = 0 To 10 Step 1
    strResultat = ""
    
    For I = 1 To Len(strChaine) Step 1
      strLettre = Mid(strChaine, I, 1)
      J = I
      Do While J > Len(strCryptKey)
        J = J - Len(strCryptKey)
      Loop
      strKeyLettre = Mid(strCryptKey, J, 1)
      intLettre = Asc(strLettre)
      intKeyLettre = Asc(strKeyLettre)
      
      If blnCryptage = True Then
        intLettre = intLettre + (intKeyLettre * Len(strChaine))
      Else
        intLettre = intLettre - (intKeyLettre * Len(strChaine))
      End If
      
      Do While intLettre > 255
        intLettre = intLettre - 255
      Loop
      Do While intLettre < 0
        intLettre = intLettre + 255
      Loop
      strResultat = strResultat & Chr(intLettre)
    Next I
    
    strChaine = strResultat
  Next K
  
  Crypt = strResultat
End Function

Conclusion :


Utilisation :

- Cryptage --> Crypt("Chaine a crypter", true)

- Decryptage -->Crypt("Chaine a decrypter", false)

A voir également

Ajouter un commentaire

Commentaires

Relax62
Messages postés
83
Date d'inscription
vendredi 2 avril 2004
Statut
Membre
Dernière intervention
8 juillet 2012
1
Merci pour votre post

Juste à noter aussi que dans votre exemple I et J seront considérés comme Variant.

Dim I, J, K As Integer => Seulement K est un integer

La bonne syntaxe c'est
Dim I As Integer, J As Integer, K As Integer

Ce n'est pas génant pour le fonctionnement mais c'est bon à savoir.

En tout cas, cette source m'est d'une grande utilité merci encore.
belouafio
Messages postés
1
Date d'inscription
jeudi 16 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2005

J'apprécis bcp votre travaille , je l'ai fais déja en assembleur avec une méthode de décalage , moi je suis spécialste en BD
cs_cloom
Messages postés
2
Date d'inscription
jeudi 9 novembre 2000
Statut
Membre
Dernière intervention
13 avril 2005

Sympa cette fonction, merci beaucoup car j'ai un projet à finir en urgence et ce site m'aide énormément!
cs_wolfcyber
Messages postés
78
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
24 juillet 2005

Merci pour tes conseils Jack, la j'ai pas le temps de modifier cela, car je vais en cours, mais ce soir je m'en occupe :-)
cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
Salut
A un moment, tu fais intLettre = intLettre + (intKeyLettre * Len(strChaine))
Sachant que intLettre est un Integer et que sa valeur maximum ne peut pas dépasser 32767, si la longueur de la chaine strChaine est trop longue, tu vas arriver en dépassement de capacité.
Ca permet quand même de coder une chaine de 268 caractères standards (cas du "z" = 122)
Mais il suffit de dimensionner intLettre As Long pour augmenter la capacité

D'autre part, dans la déclaration de ta fonction, tu utilises Function Crypt(strChaine As String, ...
Ceci sous-entend que les variables sont passées à la fonction ByRef, c'est à dire que la variable que tu utilises pour fournir la chaine d'origine est modifiée par la fonction, ce qui n'est pas très pratique
--> Function Crypt(ByVal strChaine As String, ...

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.