begin process at 2008 07 04 09:00:13
1 204 518 membres
60 nouveaux aujourd'hui
14 116 membres club

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 : 4 996

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)


25 mars 2005 17:30:48 :
Modification selon les conseils de Jack
  • 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

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS