Cryptage d'une chaîne de caractère avec la grille de vigénère

Soyez le premier à donner votre avis sur cette source.

Vue 6 373 fois - Téléchargée 453 fois

Description

La fonction Vigénère() permet de crypter une chaîne de caractère de manière efficace.
Par rapport à d'autres techniques de cryptage, Vigénère apporte deux avantages:

Premier avantage

Un même caractère dans le texte peut être codé différemment: plus le code est long (c’est-à-dire au moins aussi long que le texte à coder) et différencié (c’est-à-dire avec le moins possible de caractère identique), plus il y a de chance pour que plusieurs mêmes caractères soit codés différemment.

Deuxième avantage

Il est impossible – du moins à ma connaissance – de décodé le texte codé sans le code. Essayez.

Source / Exemple :


Function Vigénère(S As String, Code As String, Encode As Boolean) As String
 

  Dim i, j, s_Longueur, n As Integer
  Dim s_codé As String  

    j = 1
    s_Longueur = Len(S)
    s_codé = ""    

    For i = 1 To s_Longueur
      If Encode Then
        n = Asc(Mid(S, i, 1)) + Asc(Mid(Code, j, 1)) + 1
      Else
        n = Asc(Mid(S, i, 1)) - Asc(Mid(Code, j, 1)) - 1
      End If
      If n > 255 Then n = n - 255
      If n < 0 Then n = 255 + n
      s_codé = s_codé + Chr(n)
      j = j + 1
      If j > Len(Code) Then j = 1
    Next i    

    Vigénère = s_codé 

End Function

Conclusion :


Pour de plus amples explications sur le fonctionnement de la fonction Vigénère, référrez-vous au fichier ZIP joint.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
423
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Remplace :

If n > 255 Then n = n - 255
If n < 0 Then n = 255 + n

par :

If n > 255 Then n = n - 256
If n < 0 Then n = 256 + n

J'explique :

si le caractère a codé est "ÿ" (Asc(ÿ)=255) (et oui le pire je sais =)
et que le caractère de la clef est "ÿ"

le code sera égale à 255 + 255 + 1 = 511

donc n > 255 et si tu fais -255 => 511 - 255 = 256
et la, boulette, Chr(256) je vous laisse imaginer l'insulte de notre bon vieux debogeur.

=)

Pour le reste c'est nikel. Bonne source
Il y a possibilité aussi de le rendre plus performant en supprimant la concaténation, car il semblerait que l'instruction s_codé = s_codé + Chr(n) utilise beaucoup de ressource.

pour se faire tu crées une chaine de la taille de la chaine a crypter :
s_Longueur = Len(S)
s_codé = String(s_Longueur, Chr(0))

et à la place de s_codé = s_codé + Chr(n) tu mets :
Mid(s_codé, i, 1) = Chr(n)

Mais bon c'est pas vitale, c'est pour info
Messages postés
90
Date d'inscription
mardi 2 avril 2002
Statut
Membre
Dernière intervention
2 décembre 2004

ou peut-on trouver la fonction pour décrypter les informations ?
Messages postés
394
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
4 novembre 2009
1
Tu peux mettre ta source en .Net egalement si tu veux ..
A+
Bon boulot
Messages postés
84
Date d'inscription
samedi 25 mai 2002
Statut
Membre
Dernière intervention
19 janvier 2004

Question comment on utulise ta source pour codé et décoder car j'aimerais bc le savoir c'est comme tre utulile pour une source ici
si je te dirais 4 sans te dire 2+2 tu comprenderais pas pourquoi j'aurais dit 4,.......
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

Oki je vois le style d'algo ... neojoce , lis un peu le code avant de parler ... xor c'est loin d'être ça ...

Methode XOR :

ASC(A) = 65 -> 1000001 <---- Lettre à coder
ASC(C) = 67 -> 1000011 <---- Clef permettant le codage
Reésultat :
1 / 1 = 0
0 / 0 = 1
1 / 0 = 1

Bréf la le texte crypté est : 0111110 = 62 --> '>'

Bréf voilà l'algorithme XOR .

Pour l'algorithme utilisé ici , on passe plus par le binaire mais :

ASC(A) = 65
ASC(C) = 67

Resultat 65-67 -2

Avec les conditions If , si le résultat est négatif alors : Résultat = 255+Résultat négatif
Si le résultat est supérieur à 255 , alors le résultat est : Résultat-255

Bréf c'est un algorithme non bijectif , le seul point faible c'est qu'il ne crypte pas vraiment avec efficacitée si les valeurs sont faibles , et les résultats sont linéaires si me mdp est trop petit par rapport à la longeur du texte crypté ... en quelques mots il est bien pour des donées du style fichiers exe , bin , doc mais pas pour les fichiers contenant du simple texte ...
Afficher les 11 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.