Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

METHODE DE CHIFFREMENT DE VIGENÈRE, CRYPTAGE (FONCTION)


Information sur la source

Catégorie :Sécurité Niveau : Débutant Date de création : 24/03/2005 Date de mise à jour : 25/03/2005 17:30:47 Vu : 5 679

Note :
Aucune note

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

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

  • 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
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)



 

Historique

25 mars 2005 17:30:48 :
Modification selon les conseils de Jack

Commentaires et avis

signaler à un administrateur
Commentaire de jack le 25/03/2005 02:26:10 administrateur CS

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, ...

signaler à un administrateur
Commentaire de wolfcyber le 25/03/2005 06:43:55

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 :-)

signaler à un administrateur
Commentaire de cloom le 13/04/2005 13:32:08

Sympa cette fonction, merci beaucoup car j'ai un projet à finir en urgence et ce site m'aide énormément!

signaler à un administrateur
Commentaire de belouafio le 01/06/2005 23:12:36

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

signaler à un administrateur
Commentaire de Relax62 le 03/11/2006 11:53:23

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.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.