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 !

MODULE DE CRYPTAGE VIGENÈRE


Information sur la source

Catégorie :Sécurité Classé sous : vigenère, cryptage, chiffre, encryption Niveau : Débutant Date de création : 29/11/2006 Date de mise à jour : 29/11/2006 22:07:09 Vu : 4 982

Note :
Aucune note

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

Description

Simple module d'encryption de texte en Vigenère.
Il est basé sur : Asc(lettre à crypter) + Asc(lettre clé) = Asc(lettre chiffrée)
 

Source

  • Option Explicit
  • Private Function CombienDeFoisMettreDedans(s As String, key As String) As Integer
  • 'Verif de la longueur de la clé
  • If Len(s) > Len(key) Then
  • Dim newLen As Integer
  • newLen = Len(key) * (Len(s) / Len(key))
  • CombienDeFoisMettreDedans = newLen
  • Else
  • CombienDeFoisMettreDedans = 1
  • End If
  • End Function
  • Public Function VigenereEncrypt(s As String, key As String) As String
  • 'Verif de la longueur de la clé
  • If Len(s) > Len(key) Then
  • Dim newLen As Integer
  • Dim newKey As String
  • Dim j As Integer
  • newLen = CombienDeFoisMettreDedans(s, key)
  • For j = 1 To newLen
  • newKey = newKey & key
  • Next j
  • key = newKey
  • End If
  • Dim i As Integer
  • Dim tmp1 As Integer, tmp2 As Integer, tmp3 As String
  • For i = 1 To Len(s)
  • tmp1 = Asc(Mid(s, i, 1))
  • tmp2 = Asc(Mid(key, i, 1))
  • If Not tmp1 + tmp2 > 255 Then
  • tmp3 = tmp3 & Chr(tmp1 + tmp2)
  • Else
  • tmp3 = tmp3 & "{?}"
  • End If
  • Next i
  • VigenereEncrypt = tmp3
  • End Function
  • Public Function VigenereDecrypt(s As String, key As String)
  • 'Verif de la longueur de la clé
  • If Len(s) > Len(key) Then
  • Dim newLen As Integer
  • Dim newKey As String
  • Dim j As Integer
  • newLen = CombienDeFoisMettreDedans(s, key)
  • For j = 1 To newLen
  • newKey = newKey & key
  • Next j
  • key = newKey
  • End If
  • s = Replace(s, "{?}", "")
  • Dim i As Integer, tmp2 As Integer, tmp3 As String
  • For i = 1 To Len(s)
  • tmp1 = Asc(Mid(s, i, 1))
  • tmp2 = Asc(Mid(key, i, 1))
  • If tmp1 < tmp2 Then
  • tmp3 = tmp3 & "{?}"
  • Else
  • tmp3 = tmp3 & Chr(tmp1 - tmp2)
  • End If
  • Next i
  • VigenereDecrypt = tmp3
  • End Function
Option Explicit

Private Function CombienDeFoisMettreDedans(s As String, key As String) As Integer
 'Verif de la longueur de la clé
 If Len(s) > Len(key) Then
  Dim newLen As Integer
  newLen = Len(key) * (Len(s) / Len(key))
  CombienDeFoisMettreDedans = newLen
  Else
   CombienDeFoisMettreDedans = 1
 End If
End Function

Public Function VigenereEncrypt(s As String, key As String) As String
 'Verif de la longueur de la clé
 If Len(s) > Len(key) Then
  Dim newLen As Integer
  Dim newKey As String
  Dim j As Integer
  newLen = CombienDeFoisMettreDedans(s, key)
  For j = 1 To newLen
   newKey = newKey & key
  Next j
  key = newKey
 End If
 
 Dim i As Integer
 Dim tmp1 As Integer, tmp2 As Integer, tmp3 As String
 For i = 1 To Len(s)
  tmp1 = Asc(Mid(s, i, 1))
  tmp2 = Asc(Mid(key, i, 1))
  If Not tmp1 + tmp2 > 255 Then
   tmp3 = tmp3 & Chr(tmp1 + tmp2)
   Else
    tmp3 = tmp3 & "{?}"
  End If
 Next i
 VigenereEncrypt = tmp3
End Function

Public Function VigenereDecrypt(s As String, key As String)
 'Verif de la longueur de la clé
 If Len(s) > Len(key) Then
  Dim newLen As Integer
  Dim newKey As String
  Dim j As Integer
  newLen = CombienDeFoisMettreDedans(s, key)
  For j = 1 To newLen
   newKey = newKey & key
  Next j
  key = newKey
 End If
 
 s = Replace(s, "{?}", "")
 
 Dim i As Integer, tmp2 As Integer, tmp3 As String
 For i = 1 To Len(s)
  tmp1 = Asc(Mid(s, i, 1))
  tmp2 = Asc(Mid(key, i, 1))
  If tmp1 < tmp2 Then
   tmp3 = tmp3 & "{?}"
   Else
    tmp3 = tmp3 & Chr(tmp1 - tmp2)
  End If
 Next i
 VigenereDecrypt = tmp3
End Function

Conclusion

Merci à SimonKari (URL du commentaire - http://www.csharpfr.com/code.aspx?ID=25294) pour la formule !
 

Historique

29 novembre 2006 22:05:12 :
Correction de bugs ... (dans le commentaire de violent_ken)
29 novembre 2006 22:07:09 :
J'avais oublié dans la fonction VigenereDecrypt ...

Commentaires et avis

signaler à un administrateur
Commentaire de violent_ken le 29/11/2006 18:33:41

Salut, ce code est sans intérêt dans l'état.

For i = 1 To Len(s)
  tmp1 = Asc(Mid(s, i, 1))
  tmp2 = Asc(Mid(key, i, 1))
  tmp3 = tmp3 & Chr(tmp1 + tmp2)
Next i

Si la longueur de la clé est inférieure à Len(s), on fait quoi ?
Si tmp1+tmp2>255 on fait quoi ?
As tu au moins testé ton code avant de poster ???

Et code non optimisé : long inutile car Byte suffit, manque les $...etc.
Ce serais la moindre des choses pour un truc si court !


Tu devrais corriger tout çà avant qu'un admin passe et le désactive ;)
(d'autant que ce type de code est déjà présent un grand nombre de fois)
@+

signaler à un administrateur
Commentaire de ghuysmans99 le 29/11/2006 22:08:44

voilà, c'est corrigé !

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

CRYPTAGE PAR XOR [ par tekila_bandita ] Je suis en train d'ESSAYER de cr&#233;er un petit prog de cryptage de fichier au niveau binaire par xor, mais je rencontre quelque probleme, voicila p rand [ par imanedaoudi ] Bonjour, je veux generer des float avec 3 chiffre apres la firgule et les ecrire dans un fichier txt j'ai utilisé la fonction suivante: void vecteur:: chaine de caractère aléatoire sans  [ par moi4975 ] voila je suis entrain de cr&#233;er un programme pour crypter un fichier texte !Le logiciel permet de g&#233;n&#233;rer un cl&#233; aleatoire !Comment Indiquer s' il s' agit d' un chiffre ou pas [ par SpoS ] Bonjour &#224; tous, Voila en essayant de creer un peti programme je me heurte a un "petit" obstacle, je voudrai en gros encrit en ligne de code : S Cryptage [ par tinux ] Bonjour, je souhaite cr&#233;er un programme de cryptage/decryptage de texte en y inserant une clef. ==&gt; L'utilisateur rentre son texte, entre une Cryptage [ par tinux ] Bonjour, je suis en train de r&#233;aliser une appli contenant 2 textBox, 1 bouton. Le but de cet appli : =&gt; L'utilisateur rentre son texte ds text Excel combobox [ par takin55 ] Bonjour a a tous voila mon probleme Je cherche a cr&#233;er 2 combobox avec les fonctions suivantesDans la premiere je veux choisir "Chiffre" ou "Lett convertir un chiffre en chaines de caracteres!! [ par aminix9 ] Bonjour&nbsp; &#224; vous tous,j ai besoin d'une fonction qui prend com argument un&nbsp; chiffre kelkonk et retourne ce chiffre ecrit en lettres!!cad séparer des chiffres vba [ par TTHIERRY ] bonjour,j'es un chiffre que je dois s&#233;parer en 11, je m'explique le chiffre en question 123456789123 le resultat doit &#234;tre ecris dans des la creation d'un sonometre [ par nicodada ] Je souhaiterais cr&#233;er un sonometre mais mon premier probleme est de convertir le son en force; sur une echel de 10, plus le son est fort plus le


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,468 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é.