CRYPTAGE / DECRYPTAGE DE TEXTE EN UTILISANT L'ALGORYTHME DE VIGENERE
Pym Corp
Messages postés166Date d'inscriptionjeudi 9 décembre 2004StatutMembreDernière intervention18 novembre 2007
-
26 août 2005 à 18:26
stabe
Messages postés144Date d'inscriptionlundi 23 décembre 2002StatutMembreDernière intervention17 juin 2006
-
24 juin 2009 à 20:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
stabe
Messages postés144Date d'inscriptionlundi 23 décembre 2002StatutMembreDernière intervention17 juin 2006 24 juin 2009 à 20:58
bonjour
très bonne source, claire et qui fonctionne bien
va m'être bien utile
à+
cs_koops27
Messages postés2Date d'inscriptiondimanche 18 novembre 2007StatutMembreDernière intervention 4 février 2009 25 mars 2009 à 18:35
bonjour
question bête mais ou ce trouve l'exécutable car j'ai installer visual studio 8,mais rien n'a faire pour lancer le programme !?
bigbrother449
Messages postés2Date d'inscriptionlundi 8 décembre 2008StatutMembreDernière intervention26 janvier 2009 8 déc. 2008 à 16:13
Bonjour tout le monde!
Je suis désolé de poster ce message, mais je suis très nul en matière de cryptage et de décryptage. Je ne sais pas ou m'adresser!
J'ai essayé bon nombre de chose, puis je vous ton addon. je me suis dit qu'il est surement intéréssant pour moi. Mais je n'arrive pas a le faire fonctionner!
Alors si quelqun peut m'aider ou me donner un lien d'un tutoriel ce serais gentil!
Merci bcp! dsl je suis un big noob ^^
darkeenu
Messages postés25Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention10 septembre 2005 14 juin 2006 à 01:49
et bien merci pour toutes ces infos, c'est plutot intéressant !! C'est vrai que mon problème c'est de faire des algos un peu complexes et souvent pour pas grand chose :).
Et merci également pour les compliments.
@+
VladislavIV
Messages postés16Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention 1 mai 2007 16 avril 2006 à 20:09
Oups... Petite correction : le déchiffrement ne se fait pas selon la même formule :
asc(clair) = (asc(codé) - asc(clé)) mod 256. Là ça marche !!
Au temps pour moi, je retire ce que j'ai dit. Je récapitule :
Chiffrer : (lettre_claire + lettre_clé) mod 256
Déchiffrer : (lettre_codée - lettre_clé) mod 256
Voilà !
Mais ton algo montre bien qu'avec un peu de volonté on y arrive, même sans s'embrouiller avec les maths ! ;) Cela dit, ça pourra t'économiser des lignes si tu fais une grosse appli sur les algorithmes de chiffrement.
Bon boulot, et bonne continuation !
A++
VladislavIV
Messages postés16Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention 1 mai 2007 16 avril 2006 à 17:21
Salut DARKEENU,
A priori, cette formule devrait salement accélérer le processus... Maintenant, en tant qu'êtres humains, on ne verrait peut-être pas la différence ! ;)
Tu utilise tous les caractères ascii, exact ? donc pour avoir le code ascii d'un caractère crypté, tu fais : (asc(clair) + asc(clé)) mod 256. Du coup, tu as seulement deux mécanismes à faire tourner autour : parcourir toute la chaîne à crypter d'un côté, et en même temps tourner en boucle sur la clé de cryptage.
Ca devrait diminuer pas mal la longeur de ton code.
Exemple :
dim txt_clair as string
dim clé as string
dim txt_crypté as string
dim i as integer 'compteur de boucle : déplacement sur txt_clair
dim j as integer 'compteur de boucle : déplacement sur clé
'initialisation
txt_crypté = ""
j = 0
For i = 0 to txt_clair.length - 1 'parcours de la chaîne à crypter
'cryptage
txt_crypté = txt_crypté & chr((asc(txt_clair.chars(i)) + asc(clé.chars(j))) mod 256)
'on avance sur la clé
j = j + 1
If j > clé.length - 1 Then j = 0 'on a atteint la fin de la clé : on se replace au début
Next
Ca suffit à chiffrer tout le texte !
Désolé c'est du .NET, je sais pas si c'est pareil sous VB6... Donc c'est plus court, c'est plus rapide. Tu trouveras des détails sur le chiffre de Vigenère sur http://fr.wikipedia.org/wiki/Vigen%C3%A8re.
Notamment ceci : pour décrypter un texte chiffré avec la table de Vigenère, il suffit de lui refaire subir le même traitement. Donc tu ne devrais pas avoir de fonction "décrypter", cela devrait fonctionner rien qu'en repassant le texte chiffré dans ta fonction Crypter. Ce qui n'est pas le cas... Ce n'est donc pas un chiffre de Vigenère !
Perso, je viens de tester la formule citée... Bilan : ça ne marche pas avec moi non plus !! :) Je vais essayer de voir pourquoi...
A++ !
darkeenu
Messages postés25Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention10 septembre 2005 16 avril 2006 à 03:20
salut VladislavIV,
ben encore une fois je ne comprends pas tellement l'utilité de la chose (ça doit être parce que les maths et moi on ne s'entend pas trop). Cela accélèrerait-il le calcul de cryptage/décryptage (qui pour ma part me parait satisfaisant) ? Aussi concernant l'algo il ne me paraissait pas si compliqué en fait :)
VladislavIV
Messages postés16Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention 1 mai 2007 5 avril 2006 à 20:35
Salut DARKEENU,
Si tu veux élargir le jeu de caractères, tu adaptes la numérotation : pour le jeu A..Za..z tu comptes 0..51, etc... Le tout c'est de respecter la même numérotation partout, et de faire modulo le nombre de caractères. C'est mathématique. A priori.
Maintenant, je dis ça, mais j'ai pas testé... Je te laisse l'honneur ;)
A++
darkeenu
Messages postés25Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention10 septembre 2005 4 avril 2006 à 23:17
salut VladislavIV,
ben si je limite les lettres de 0 à 25 je ne pourrais faire que les lettres de A à Z non ? Moi j'aimerais prendre tous les caractères possibles.
VladislavIV
Messages postés16Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention 1 mai 2007 19 janv. 2006 à 13:58
Au fait, darkeenu, je sais pas si tu sais, mais en numérotant les lettres de 0 à 25, on obtient :
(lettre_clair + clé) modulo 25 = lettre_codée...
De l'utilité d'exploiter les propriétés mathématiques des fonctions de cryptage, pour ne pas s'embêter à faire de gros algos...
darkeenu
Messages postés25Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention10 septembre 2005 6 sept. 2005 à 21:03
c bon j'ai géré le retour chariot puisque apparement c t génant... Donc voili voulou, j'espère que ça vous plaira, et moi c géré pour l'aller et le retour (cryptage comme décryptage)
mousse31
Messages postés2Date d'inscriptionjeudi 6 février 2003StatutMembreDernière intervention 6 septembre 2005 6 sept. 2005 à 15:20
Oui mais ensuite quand je recripte un coup puis redecrypt j'ai plus des ìé mais de é seulement
Mousse31 :-)
cs_Dede
Messages postés61Date d'inscriptionmercredi 2 janvier 2002StatutMembreDernière intervention24 juillet 2006 6 sept. 2005 à 15:13
Pour ma part, j'ai juste ajouté en fin de module de décryptage :
ResuTxT = Replace(ResuTxT, "ìé", vbCrLf)
ou "ìé" rprésente le codage du retour-chariotte.
Dede :-)
mousse31
Messages postés2Date d'inscriptionjeudi 6 février 2003StatutMembreDernière intervention 6 septembre 2005 5 sept. 2005 à 10:54
Bonjour,
Merci pour ce bout de code. Malheureusement il n'encode pas les retour à la ligne.
Quelqu'un saurait comment faire ?
Merci d'avance
darkeenu
Messages postés25Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention10 septembre 2005 2 sept. 2005 à 00:13
Re dédé ;)
Tout d'abord merci pour tes remarques, j'avais remarqué que les retours à la lignes ne sont pas traités, puisque je n'ai pas travaillé pour... Ensuite, Je travaille la programmation bien avant la mise en forme, puisque je fais des algos sur papier, ensuite des tests de chaque module, puis j'incorpore chaque module dans le programme. Et enfin, je donne une halure plus gaie (rien avoir avec l'homosexualité..., juste du graphisme). Même si ça ne se voit peut être pas (lol) j'ai un DUT info...
Cela dit, comme je l'ai précisé dans un de mes commentaires, je ne suis pas un gars qui pense qu'à la programmation, je fais les progs dans le but de satisfaire mes besoins ou ceux de mes proches. Et ensuite je les met en ligne pour ceux qui en auront besoin.
cs_Dede
Messages postés61Date d'inscriptionmercredi 2 janvier 2002StatutMembreDernière intervention24 juillet 2006 1 sept. 2005 à 17:09
Au temps pour moi,
et pourtant, on me l'avait déja fait remarquer.
Bravo et pas véxé.
Dede :-)
stef2004
Messages postés105Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention29 décembre 2005 1 sept. 2005 à 15:11
sans vouloir vexer personne, on n'écrit pas "Autant pour moi" mais "Au temps pour moi".
Cette expression vient de l'ordre militaire "Au temps", qui signifie qu'il faut répeter l'action précédente, non faite correctement.
Bon finie l'heure d'orthographe,
bravo pour l'algorithme
a bientot
stef2004
cs_Dede
Messages postés61Date d'inscriptionmercredi 2 janvier 2002StatutMembreDernière intervention24 juillet 2006 1 sept. 2005 à 12:03
Pop, pop, pop...
Autant pour moi !
Pour ma remarque sur les accents, cela vient d'une modif de ma part afin de corriger le bug du retour à la ligne.
Autant pou moi, donc.
Milles s'cuses Dede :-)
cs_Dede
Messages postés61Date d'inscriptionmercredi 2 janvier 2002StatutMembreDernière intervention24 juillet 2006 1 sept. 2005 à 11:41
J'ai regardé un peu plus loin, et j'ai quelques remarques (constructives uniquement).
Problème sur les lettres accentuées qui ne sont pas redécryptées correctement.
problème sur les retours à la ligne (VBCRLF, même chose que ci-dessus).
Puis là, c'est perso, pourquoi faire un semblant de fichier ini, fais en un vrai compatible avec les fonctions des fichiers de ce type (tu trouveras tout pour le faire sur ce même site).
Et enfin, si je peux me permettre une réflexion plus générale (car je ne voudrais surtout pas te vexer), il me semble préférable de travailler la programmation à fond et de voir seulement ensuite la présentation et les petits plus.
C'est comme le batiment, en premier le gros oeuvre qui tiens bien et qui est fonctionnel, et ensuite la déco et les peintures.
En tous les cas bravo pour cet algo que je ne connaissait pas et bonne continuation.
Dede :-)
jrbleboss
Messages postés480Date d'inscriptionjeudi 6 mai 2004StatutMembreDernière intervention 3 septembre 20071 1 sept. 2005 à 11:09
Ok tu as raison !!!
Très bien, en plus c'est rapide.
darkeenu
Messages postés25Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention10 septembre 2005 1 sept. 2005 à 04:28
salut JRBLEBOSS, je trouve que l'algorithme de Vigénère est suffisemment sur si tu utilise une clef longue. Puisque la seule façon de décrypter un texte crypté grâce à Vigénère, c'est soit de connaitre la clef, soit de faire une analyse de fréquence des lettres. Or si la clé est longue, la fréquence est rompue, et le décryptage est on va dire quasi impossible (puisque rien n'est impossible en informatique, c bien connu) ;)
Et DEDE, merci pour le tuyau, j'avais pas si bien pigé que ça ce que m'avais dit JJDay alors... Désole :S
Bon je met la nouvelle mise à jour de suite.
Amusez-vous bien :)
cs_Dede
Messages postés61Date d'inscriptionmercredi 2 janvier 2002StatutMembreDernière intervention24 juillet 2006 31 août 2005 à 16:38
Scuse moi, je cherchais un module rapide de cryptage de texte, et je tombe sur le tiens.
Je tombe sur un plantage dans ta fonction de cryptage :
La variable de gestion de position (POS) est déclarée en integer, donc elle plante sur un texte long (>32000 cars).
Bon je reteste tout cela.
Merci tout de même, et bonne continuation.
Dede :-)
jrbleboss
Messages postés480Date d'inscriptionjeudi 6 mai 2004StatutMembreDernière intervention 3 septembre 20071 30 août 2005 à 10:38
Grand frère ?
cs_ynes
Messages postés1Date d'inscriptionlundi 29 août 2005StatutMembreDernière intervention29 août 2005 29 août 2005 à 18:41
Merci grand frère. Et beaucoup de courage.
jrbleboss
Messages postés480Date d'inscriptionjeudi 6 mai 2004StatutMembreDernière intervention 3 septembre 20071 29 août 2005 à 15:35
Ce n'est pas un cryptage très sécurisé mais il fonctionne rapidement et bien.
Continue.
JRB
9/10
darkeenu
Messages postés25Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention10 septembre 2005 29 août 2005 à 00:56
ok merci du tuyau mec !!!!
j'aime bien les gars comme toi ;) c cool. Je v modifier ça de suite
Salut:
je cherchais a faire un algorythme de cryptage en DotNet, ca tombe bien ca devrait pas pauser trop de problemes a porter.
Toutefois il y a un petit bug dabs ta source, si on rentre un texte de plus de 32768 caracteres, ca plante.
c'est du au fait que les variables de comptage sont déclarées en "Integer", il faut les déclarer en "long" pour pouvoir crypter des textes de plus de 32768 caractères.
24 juin 2009 à 20:58
très bonne source, claire et qui fonctionne bien
va m'être bien utile
à+
25 mars 2009 à 18:35
question bête mais ou ce trouve l'exécutable car j'ai installer visual studio 8,mais rien n'a faire pour lancer le programme !?
8 déc. 2008 à 16:13
Je suis désolé de poster ce message, mais je suis très nul en matière de cryptage et de décryptage. Je ne sais pas ou m'adresser!
J'ai essayé bon nombre de chose, puis je vous ton addon. je me suis dit qu'il est surement intéréssant pour moi. Mais je n'arrive pas a le faire fonctionner!
Alors si quelqun peut m'aider ou me donner un lien d'un tutoriel ce serais gentil!
Merci bcp! dsl je suis un big noob ^^
14 juin 2006 à 01:49
Et merci également pour les compliments.
@+
16 avril 2006 à 20:09
asc(clair) = (asc(codé) - asc(clé)) mod 256. Là ça marche !!
Au temps pour moi, je retire ce que j'ai dit. Je récapitule :
Chiffrer : (lettre_claire + lettre_clé) mod 256
Déchiffrer : (lettre_codée - lettre_clé) mod 256
Voilà !
Mais ton algo montre bien qu'avec un peu de volonté on y arrive, même sans s'embrouiller avec les maths ! ;) Cela dit, ça pourra t'économiser des lignes si tu fais une grosse appli sur les algorithmes de chiffrement.
Bon boulot, et bonne continuation !
A++
16 avril 2006 à 17:21
A priori, cette formule devrait salement accélérer le processus... Maintenant, en tant qu'êtres humains, on ne verrait peut-être pas la différence ! ;)
Tu utilise tous les caractères ascii, exact ? donc pour avoir le code ascii d'un caractère crypté, tu fais : (asc(clair) + asc(clé)) mod 256. Du coup, tu as seulement deux mécanismes à faire tourner autour : parcourir toute la chaîne à crypter d'un côté, et en même temps tourner en boucle sur la clé de cryptage.
Ca devrait diminuer pas mal la longeur de ton code.
Exemple :
dim txt_clair as string
dim clé as string
dim txt_crypté as string
dim i as integer 'compteur de boucle : déplacement sur txt_clair
dim j as integer 'compteur de boucle : déplacement sur clé
'initialisation
txt_crypté = ""
j = 0
For i = 0 to txt_clair.length - 1 'parcours de la chaîne à crypter
'cryptage
txt_crypté = txt_crypté & chr((asc(txt_clair.chars(i)) + asc(clé.chars(j))) mod 256)
'on avance sur la clé
j = j + 1
If j > clé.length - 1 Then j = 0 'on a atteint la fin de la clé : on se replace au début
Next
Ca suffit à chiffrer tout le texte !
Désolé c'est du .NET, je sais pas si c'est pareil sous VB6... Donc c'est plus court, c'est plus rapide. Tu trouveras des détails sur le chiffre de Vigenère sur http://fr.wikipedia.org/wiki/Vigen%C3%A8re.
Notamment ceci : pour décrypter un texte chiffré avec la table de Vigenère, il suffit de lui refaire subir le même traitement. Donc tu ne devrais pas avoir de fonction "décrypter", cela devrait fonctionner rien qu'en repassant le texte chiffré dans ta fonction Crypter. Ce qui n'est pas le cas... Ce n'est donc pas un chiffre de Vigenère !
Perso, je viens de tester la formule citée... Bilan : ça ne marche pas avec moi non plus !! :) Je vais essayer de voir pourquoi...
A++ !
16 avril 2006 à 03:20
ben encore une fois je ne comprends pas tellement l'utilité de la chose (ça doit être parce que les maths et moi on ne s'entend pas trop). Cela accélèrerait-il le calcul de cryptage/décryptage (qui pour ma part me parait satisfaisant) ? Aussi concernant l'algo il ne me paraissait pas si compliqué en fait :)
5 avril 2006 à 20:35
Si tu veux élargir le jeu de caractères, tu adaptes la numérotation : pour le jeu A..Za..z tu comptes 0..51, etc... Le tout c'est de respecter la même numérotation partout, et de faire modulo le nombre de caractères. C'est mathématique. A priori.
Maintenant, je dis ça, mais j'ai pas testé... Je te laisse l'honneur ;)
A++
4 avril 2006 à 23:17
ben si je limite les lettres de 0 à 25 je ne pourrais faire que les lettres de A à Z non ? Moi j'aimerais prendre tous les caractères possibles.
19 janv. 2006 à 13:58
(lettre_clair + clé) modulo 25 = lettre_codée...
De l'utilité d'exploiter les propriétés mathématiques des fonctions de cryptage, pour ne pas s'embêter à faire de gros algos...
6 sept. 2005 à 21:03
6 sept. 2005 à 15:20
Mousse31 :-)
6 sept. 2005 à 15:13
ResuTxT = Replace(ResuTxT, "ìé", vbCrLf)
ou "ìé" rprésente le codage du retour-chariotte.
Dede :-)
5 sept. 2005 à 10:54
Merci pour ce bout de code. Malheureusement il n'encode pas les retour à la ligne.
Quelqu'un saurait comment faire ?
Merci d'avance
2 sept. 2005 à 00:13
Tout d'abord merci pour tes remarques, j'avais remarqué que les retours à la lignes ne sont pas traités, puisque je n'ai pas travaillé pour... Ensuite, Je travaille la programmation bien avant la mise en forme, puisque je fais des algos sur papier, ensuite des tests de chaque module, puis j'incorpore chaque module dans le programme. Et enfin, je donne une halure plus gaie (rien avoir avec l'homosexualité..., juste du graphisme). Même si ça ne se voit peut être pas (lol) j'ai un DUT info...
Cela dit, comme je l'ai précisé dans un de mes commentaires, je ne suis pas un gars qui pense qu'à la programmation, je fais les progs dans le but de satisfaire mes besoins ou ceux de mes proches. Et ensuite je les met en ligne pour ceux qui en auront besoin.
1 sept. 2005 à 17:09
et pourtant, on me l'avait déja fait remarquer.
Bravo et pas véxé.
Dede :-)
1 sept. 2005 à 15:11
Cette expression vient de l'ordre militaire "Au temps", qui signifie qu'il faut répeter l'action précédente, non faite correctement.
Bon finie l'heure d'orthographe,
bravo pour l'algorithme
a bientot
stef2004
1 sept. 2005 à 12:03
Autant pour moi !
Pour ma remarque sur les accents, cela vient d'une modif de ma part afin de corriger le bug du retour à la ligne.
Autant pou moi, donc.
Milles s'cuses Dede :-)
1 sept. 2005 à 11:41
Problème sur les lettres accentuées qui ne sont pas redécryptées correctement.
problème sur les retours à la ligne (VBCRLF, même chose que ci-dessus).
Puis là, c'est perso, pourquoi faire un semblant de fichier ini, fais en un vrai compatible avec les fonctions des fichiers de ce type (tu trouveras tout pour le faire sur ce même site).
Et enfin, si je peux me permettre une réflexion plus générale (car je ne voudrais surtout pas te vexer), il me semble préférable de travailler la programmation à fond et de voir seulement ensuite la présentation et les petits plus.
C'est comme le batiment, en premier le gros oeuvre qui tiens bien et qui est fonctionnel, et ensuite la déco et les peintures.
En tous les cas bravo pour cet algo que je ne connaissait pas et bonne continuation.
Dede :-)
1 sept. 2005 à 11:09
Très bien, en plus c'est rapide.
1 sept. 2005 à 04:28
Et DEDE, merci pour le tuyau, j'avais pas si bien pigé que ça ce que m'avais dit JJDay alors... Désole :S
Bon je met la nouvelle mise à jour de suite.
Amusez-vous bien :)
31 août 2005 à 16:38
Je tombe sur un plantage dans ta fonction de cryptage :
La variable de gestion de position (POS) est déclarée en integer, donc elle plante sur un texte long (>32000 cars).
Bon je reteste tout cela.
Merci tout de même, et bonne continuation.
Dede :-)
30 août 2005 à 10:38
29 août 2005 à 18:41
29 août 2005 à 15:35
Continue.
JRB
9/10
29 août 2005 à 00:56
j'aime bien les gars comme toi ;) c cool. Je v modifier ça de suite
27 août 2005 à 17:38
je cherchais a faire un algorythme de cryptage en DotNet, ca tombe bien ca devrait pas pauser trop de problemes a porter.
Toutefois il y a un petit bug dabs ta source, si on rentre un texte de plus de 32768 caracteres, ca plante.
c'est du au fait que les variables de comptage sont déclarées en "Integer", il faut les déclarer en "long" pour pouvoir crypter des textes de plus de 32768 caractères.