tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 6 oct. 2004 à 12:00
Ok, merci, je n'avais pas compris que tu parlais de mettre une clé proche de la clé d'origine pour décrypter, je pensais que tu parlais de mettre un texte proche de la clé. Donc dans ce cas, il est vrai, que le texte obtenu est TRES proche, mais encore faut-il avoir le même programme de cryptage... :p De plus, je ne prends pas ça mal, j'ai juste une façon de parler un peu sèche :( et je ne tiens pas vraiment compte des notes donc ça ne me chagrine pas :) Cela dit, merci quand même. De plus, ayant fait ce programme en 1/2h (au départ), j'ai plutôt cherché à adapter le texte obtenu pour qu'il s'intègre bien sous msn (d'où le fait que je n'aie pas pris en compte les majuscules car je voulais faire vite) qu'à penser à toutes les possibilités d'optimisations pour la rapidité, qui est ma foi assez correcte pour l'utilisation que j'en ai. Merci pour tout vos conseils, ça fait plaisir que pour une fois, on me laisse des commentaires sur une de mes source... Maintenant, je vais essayer de faire un plugin pour msn, là, ce sera vraiment intéressant, ensuite, je verrais pour l'optimisation (^c^) @+
vlad2i
Messages postés285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 février 2005 5 oct. 2004 à 17:34
PS : 4/10 c'est qd meme méchant comme note ...
OK c pas parfait, mais c'est po du kk non plus
Je te met un 8, pour rééquilibrer
Vlad
vlad2i
Messages postés285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 février 2005 5 oct. 2004 à 17:32
Prends pas ca mal, tbbuim ...
Quand je dis qu'avec une clé proche de la bonne, le message est proche du bon...
un exemple concret :
In Spain, it rains in spain (clé abcdefghij) =>
jp%wugpvé6jv%vfou/5so?vtfou
Mais si je décrypte avec une mauvaise clé (abcddfghij) =>
in sqain, it rbins in spbin
non seulement, je vois que seule une lettre toute les 10 en partant de la 5e (espaces et ponctuations compris) a changé ... je remarque aussi que la lettre est la suivante de celle que l'on attend dans l'alphabet => je dois donc avancer d'une lettre la 5e de mon code ... et que la clé fait 10 lettres de long...
Tt ca certes, c'est un peu d'un niveau plus avancé, très empirique et évidement je ne prétends pas tromber par hasard sur une clé aussi proche...
Mais c'est ca que j'entends par un "résultat proche si la clé est proche" ... Si on a a peu pres ta clé, on a a peu prés le message :)
Vlad
fkx
Messages postés44Date d'inscriptionjeudi 29 janvier 2004StatutMembreDernière intervention26 juin 2006 5 oct. 2004 à 12:46
Petite remarque supplémentaire, tu n'auras qu'à appeller ton tableau "alpha" pour ne pas avoir à refaire tout ton code.
Essaie aussi de remplacer le plus souvent possible tes String par des Byte (quand c'est possible, évidemment)
fkx
Messages postés44Date d'inscriptionjeudi 29 janvier 2004StatutMembreDernière intervention26 juin 2006 5 oct. 2004 à 12:42
Pourquoi ne pas optimiser un peu ton code ?
Par exemple,
Public Function Crypte(ByVal C As String, ByVal T As String) As String
Dim Temp As Integer
Dim C1, T1 As String
C1 = alpha(C)
T1 = alpha(T)
Temp = CInt(C1) + CInt(T1)
If (Temp > NbC) Then Temp = Temp - NbC
Crypte = reget(CStr(Temp))
StrCrypt = StrCrypt & Crypte
End Function
Pourrait être remplacé par :
Public Function Crypte(ByVal C As String, ByVal T As String) As String
Dim Temp As Integer
Temp = CInt(alpha(C)) + CInt(alpha(T))
Temp = Temp mod NbC
Crypte = reget(CStr(Temp))
StrCrypt = StrCrypt & Crypte
End Function
La seule ligne sur laquelle j'ai un doute est :
Temp = Temp mod NbC
En effet, dans des langages un peu plus "optimisés" (genre C++ voire ASM), le débranchement (if...then...) avec une affectation dans le "then" est plus coûteux (en temps) que l'affectation directe (en l'occurence, le test que l'on souhaite faire s'y prête très bien).
La question est donc de savoir si VB réalise le modulo "lui-même" (avec des instructions ASM) ou s'il fait appel à la vilaine MSVBVMx.DLL pour le calculer, auquel cas il se pourrait que le test (réalisé en ASM, c'est sur) soit plus rapide.
A voir...
En tous cas, la morale de l'histoire est : "Optimisation !"
Dans cette optique, je te conseille plus que très vivement de remplacer ta fonction "alpha(caract As String) As String"
par un tableau de CARACTERES (Byte en VB) que tu initialiseras au lancement du programme par exemple.
Ayant déjà testé, cette optimisation est très très très efficace !
Bonne prog !!!
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 5 oct. 2004 à 09:24
Ok les gars, amusez vous bien avec vos méthodes de cryptage, je cherche pas à me cacher aux yeux des RG, mais juste aux yeux des quiches de mon services info :p
Donc pour moi, ce code et suffisant et TRES TRES efficace! :D Certes, pour nous, ça ne l'est pas :(
En revanche Vlad, je ne comprends pas ce que tu entends par très proche? car, si je choisi la clé tbbuim et que le mot à crypter est tbbuim, la réponse n'est pas tbbuim et est loin de l'être, encore plus, si je mélange les lettres de l'alphabet, donc pour moi ce n'est pas TRES proche, par conséquent, j'aimerais comprendre pourquoi tu dis ça.
RaphAstronome
Messages postés104Date d'inscriptionsamedi 7 décembre 2002StatutMembreDernière intervention17 août 2009 4 oct. 2004 à 18:30
C'est facile a casser si il y a repetition de caractaire :
5 1 4 3 Code
1 1 1 1 Message
----------
6 2 7 4 Crypté
Il est possible de faire une étude statistique et de casser le code.
dnob700
Messages postés44Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention 5 novembre 2007 4 oct. 2004 à 18:14
oui, c'est sympa pour t'initier, mais si effectivement, c'est une méthode simple, elle n'est pas vraiment efficace.
donc il n'y a un interet pédagogique, mais aucun interet pour le cryptage lui même car ton système se casse extremement facilement (pour un texte de 5mo comme il est question plus haut, c'est un jeu d'enfant, la facilité du cassage augmentant avec la longueur du code, sauf si la clef augmente aussi en longueur).
si tu veux améliorer ton programme tout en continuant à utiliser des clefs privées, essaye de mélanger plusieurs sytème de cryptage décalage (comme tu le fait, avec des clefs plus longue) + des XOR avec une autre clef + un hash. Par exemple.
vlad2i
Messages postés285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 février 2005 4 oct. 2004 à 17:28
tbbuim> concernant ta réponse; le message obtenu est TRES proche, disais-je, si la clé utilisée est TRES proche elle aussi... Pour contrer ta théorie, j'ai cassé (a la main, et a la machine) pour les besoins des tests de Fitz son cryptage (sui marche +/- comme DES, donc codage symmétrique + password + transposition) et il ne s'agit évidemment pas de lettres bien rangées :)
"on ne connait pas l'ordre dans lequel ont été placé les caractères " ... ca n'est pas déterminant... une analyse heuristique des caractères dans une langue donnée te donne de suite les correspondances :)
Vi c'est po inviolable :) mais regardes Rijndael, RSA (aie, mauvais exemple :p), bon alors Serpent ou Blowfish ... Très très sécurisés, meme si pas inviolables, et publics (tout du moins utilisables gratuitement) ...
PS: correction de vocabulaire :
"mais au contraire presque tous les autres caractères sauf les unicodes" <== niet
tu voudrais en fait placer tous les caractères alphanumériques de la table ASCII (qui comporte 256 caractères au total)
Les "caractères unicodes", qui sont des combinaisons de caractères sur 1, 2, 3 ou 4 octets sont cryptés exactement pareil, cad, un prog capable de crypter ASCII peut crypter UNICODE indiferremment :)
Si tu adaptes ton code à ASCII, ca donne :
A = mot de passe
B = message
C A+B message crypté ...
on ne peut pas faire plus simple :)
et ca marche :)
J'essaies juste d'aider moi :p ton code marche, certes. Il possède juste quelques failles que je te présente, c'est pour t'aider, pas pour critiquer ni quoi que ce soit dans ce genre
Vlad
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 4 oct. 2004 à 09:44
1. Exact, je n'ai pas encore mis les majuscules dans mon alphabet, mais vous pouvez les rajouter sans aucun problème, c'est très simple...
2. Le message obtenu n'est pas du tout proche, ça dépend de ta clé en fait, certe, le message obtenu se répète et donc on peut déterminer combien de lettre compose la clé, mais ce n'est pas suffisant pour la trouver... De plus, mon alphabet ne contient pas que 26 lettres, mais au contraire presque tous les autres caractères sauf les unicodes, soit près de 80 et je n'ai pas encore rajouter les majuscules, ce qui devrait faire dans les 106. Pour compliquer les chose, il faudrait mélanger les lettres de l'alphabet. Ainsi, un cassage (à la main) serait très difficile à réaliser, dans la mesure ou l'on ne connait pas l'ordre dans lequel ont été placé les caractères de l'alphabet. Et je pense que le cassage dont tu parles a été réalisé sur un petit alphabet bien rangé ne contenant que des lettres... :)
3. Bien entendu, cette méthode de cryptage n'est pas inviolable, mais pensez vous que si j'avais trouvé une telle méthode, je vous l'aurais partagé..?
PS: Merci Gandalfkhorne pour tes précisions.
Jupiter, tu peux me contacter quand tu veux.
vlad2i
Messages postés285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 février 2005 3 oct. 2004 à 17:10
Salut hehe
J'aime bien montrer qu'il y a des failles juste pour que les auteurs réagissent des fois hehe
1. Ton programme ne fait pas de différence entre les majuscules et les minuscules semble-t-il
2. Quand on a une clé proche de la clé d'origine, le message est proche lui aussi, et l'erreur diffusée est perpétuée régulièrement
Ce qui signifie que ... 26 lettres (+accents+chiffres+ponctuation+caractères isolés) a analyser × la longueur du message = nombre d'essais avant de trouver (a coup sur) ton message, et donc, ta clé...
Vigenère... il a été cru inviolable jusqu'a son cassage (à la main) au 18è siècle ...
Remarque, c'est une méthode comme une autre pour s'initier :) et ton code fait très bien ce qu'il fait :)
Vlad
gandalfkhorne
Messages postés70Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention 1 octobre 2004 1 oct. 2004 à 20:28
cs_jupiter
Messages postés34Date d'inscriptionlundi 5 août 2002StatutMembreDernière intervention 9 janvier 2009 1 oct. 2004 à 15:25
Bravo pour cet essai.
Ce principe de cryptage par clé symétrique semble simple de conception mais je pense qu'il doit être assez facilement décryptable par des logiciels adaptés au déchiffrement. Je m'interresse depuis peu à la cryptanalyse mais je n'ai aucune référence sur ces log de décryptage ou je suppose que la difficulté majeure est de déterminer la longueur de la clé. Si tu as quelques tuyaux sur le concept de ces logiciels de décryptage, ca m'interresse beaucoup.
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 1 oct. 2004 à 09:39
Comme je l'ai dit, ce petit programme a été fait rapidement afin d'éviter qu'on lise mais conversation sur msn. Donc pas besoin de crypter un fichier de 5Mo. Mais si tu regardes la source, tu peux t'en inspirer, afin de crypter ton fichier de 5Mo. Attention tout de même, il faut compléter l'alphabet afin de crypter tous les caractères sinon yaura peut être des erreurs. Mais c'est pas mal comme idée, je pense que je ferais une mise à jour pour pouvoir le faire, surement ce weekend. [:)]
e_NeX
Messages postés104Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention30 novembre 2009 30 sept. 2004 à 23:43
Moias , ca a l'air pas mal! Je n'ai pas ouverta source mais ce qu'il faudrais savoir, c si ca peux crypter un fichier de 5mb? parceke crypter 5 ligne c'est bien mais bon...
6 oct. 2004 à 12:00
5 oct. 2004 à 17:34
OK c pas parfait, mais c'est po du kk non plus
Je te met un 8, pour rééquilibrer
Vlad
5 oct. 2004 à 17:32
Quand je dis qu'avec une clé proche de la bonne, le message est proche du bon...
un exemple concret :
In Spain, it rains in spain (clé abcdefghij) =>
jp%wugpvé6jv%vfou/5so?vtfou
Mais si je décrypte avec une mauvaise clé (abcddfghij) =>
in sqain, it rbins in spbin
non seulement, je vois que seule une lettre toute les 10 en partant de la 5e (espaces et ponctuations compris) a changé ... je remarque aussi que la lettre est la suivante de celle que l'on attend dans l'alphabet => je dois donc avancer d'une lettre la 5e de mon code ... et que la clé fait 10 lettres de long...
Tt ca certes, c'est un peu d'un niveau plus avancé, très empirique et évidement je ne prétends pas tromber par hasard sur une clé aussi proche...
Mais c'est ca que j'entends par un "résultat proche si la clé est proche" ... Si on a a peu pres ta clé, on a a peu prés le message :)
Vlad
5 oct. 2004 à 12:46
Essaie aussi de remplacer le plus souvent possible tes String par des Byte (quand c'est possible, évidemment)
5 oct. 2004 à 12:42
Par exemple,
Public Function Crypte(ByVal C As String, ByVal T As String) As String
Dim Temp As Integer
Dim C1, T1 As String
C1 = alpha(C)
T1 = alpha(T)
Temp = CInt(C1) + CInt(T1)
If (Temp > NbC) Then Temp = Temp - NbC
Crypte = reget(CStr(Temp))
StrCrypt = StrCrypt & Crypte
End Function
Pourrait être remplacé par :
Public Function Crypte(ByVal C As String, ByVal T As String) As String
Dim Temp As Integer
Temp = CInt(alpha(C)) + CInt(alpha(T))
Temp = Temp mod NbC
Crypte = reget(CStr(Temp))
StrCrypt = StrCrypt & Crypte
End Function
La seule ligne sur laquelle j'ai un doute est :
Temp = Temp mod NbC
En effet, dans des langages un peu plus "optimisés" (genre C++ voire ASM), le débranchement (if...then...) avec une affectation dans le "then" est plus coûteux (en temps) que l'affectation directe (en l'occurence, le test que l'on souhaite faire s'y prête très bien).
La question est donc de savoir si VB réalise le modulo "lui-même" (avec des instructions ASM) ou s'il fait appel à la vilaine MSVBVMx.DLL pour le calculer, auquel cas il se pourrait que le test (réalisé en ASM, c'est sur) soit plus rapide.
A voir...
En tous cas, la morale de l'histoire est : "Optimisation !"
Dans cette optique, je te conseille plus que très vivement de remplacer ta fonction "alpha(caract As String) As String"
par un tableau de CARACTERES (Byte en VB) que tu initialiseras au lancement du programme par exemple.
Ayant déjà testé, cette optimisation est très très très efficace !
Bonne prog !!!
5 oct. 2004 à 09:24
Donc pour moi, ce code et suffisant et TRES TRES efficace! :D Certes, pour nous, ça ne l'est pas :(
En revanche Vlad, je ne comprends pas ce que tu entends par très proche? car, si je choisi la clé tbbuim et que le mot à crypter est tbbuim, la réponse n'est pas tbbuim et est loin de l'être, encore plus, si je mélange les lettres de l'alphabet, donc pour moi ce n'est pas TRES proche, par conséquent, j'aimerais comprendre pourquoi tu dis ça.
4 oct. 2004 à 18:30
5 1 4 3 Code
1 1 1 1 Message
----------
6 2 7 4 Crypté
Il est possible de faire une étude statistique et de casser le code.
4 oct. 2004 à 18:14
donc il n'y a un interet pédagogique, mais aucun interet pour le cryptage lui même car ton système se casse extremement facilement (pour un texte de 5mo comme il est question plus haut, c'est un jeu d'enfant, la facilité du cassage augmentant avec la longueur du code, sauf si la clef augmente aussi en longueur).
si tu veux améliorer ton programme tout en continuant à utiliser des clefs privées, essaye de mélanger plusieurs sytème de cryptage décalage (comme tu le fait, avec des clefs plus longue) + des XOR avec une autre clef + un hash. Par exemple.
4 oct. 2004 à 17:28
"on ne connait pas l'ordre dans lequel ont été placé les caractères " ... ca n'est pas déterminant... une analyse heuristique des caractères dans une langue donnée te donne de suite les correspondances :)
Vi c'est po inviolable :) mais regardes Rijndael, RSA (aie, mauvais exemple :p), bon alors Serpent ou Blowfish ... Très très sécurisés, meme si pas inviolables, et publics (tout du moins utilisables gratuitement) ...
PS: correction de vocabulaire :
"mais au contraire presque tous les autres caractères sauf les unicodes" <== niet
tu voudrais en fait placer tous les caractères alphanumériques de la table ASCII (qui comporte 256 caractères au total)
Les "caractères unicodes", qui sont des combinaisons de caractères sur 1, 2, 3 ou 4 octets sont cryptés exactement pareil, cad, un prog capable de crypter ASCII peut crypter UNICODE indiferremment :)
Si tu adaptes ton code à ASCII, ca donne :
A = mot de passe
B = message
C A+B message crypté ...
on ne peut pas faire plus simple :)
et ca marche :)
J'essaies juste d'aider moi :p ton code marche, certes. Il possède juste quelques failles que je te présente, c'est pour t'aider, pas pour critiquer ni quoi que ce soit dans ce genre
Vlad
4 oct. 2004 à 09:44
2. Le message obtenu n'est pas du tout proche, ça dépend de ta clé en fait, certe, le message obtenu se répète et donc on peut déterminer combien de lettre compose la clé, mais ce n'est pas suffisant pour la trouver... De plus, mon alphabet ne contient pas que 26 lettres, mais au contraire presque tous les autres caractères sauf les unicodes, soit près de 80 et je n'ai pas encore rajouter les majuscules, ce qui devrait faire dans les 106. Pour compliquer les chose, il faudrait mélanger les lettres de l'alphabet. Ainsi, un cassage (à la main) serait très difficile à réaliser, dans la mesure ou l'on ne connait pas l'ordre dans lequel ont été placé les caractères de l'alphabet. Et je pense que le cassage dont tu parles a été réalisé sur un petit alphabet bien rangé ne contenant que des lettres... :)
3. Bien entendu, cette méthode de cryptage n'est pas inviolable, mais pensez vous que si j'avais trouvé une telle méthode, je vous l'aurais partagé..?
PS: Merci Gandalfkhorne pour tes précisions.
Jupiter, tu peux me contacter quand tu veux.
3 oct. 2004 à 17:10
J'aime bien montrer qu'il y a des failles juste pour que les auteurs réagissent des fois hehe
1. Ton programme ne fait pas de différence entre les majuscules et les minuscules semble-t-il
2. Quand on a une clé proche de la clé d'origine, le message est proche lui aussi, et l'erreur diffusée est perpétuée régulièrement
Ce qui signifie que ... 26 lettres (+accents+chiffres+ponctuation+caractères isolés) a analyser × la longueur du message = nombre d'essais avant de trouver (a coup sur) ton message, et donc, ta clé...
Vigenère... il a été cru inviolable jusqu'a son cassage (à la main) au 18è siècle ...
Remarque, c'est une méthode comme une autre pour s'initier :) et ton code fait très bien ce qu'il fait :)
Vlad
1 oct. 2004 à 20:28
(100 Ko.s ~)
Sinon pour information il y a un script de décryptage par Vigénère, tu peux le tester : http://www.bibmath.net/crypto/poly/viganajava.php3
Bonne continuation, +
1 oct. 2004 à 15:25
Ce principe de cryptage par clé symétrique semble simple de conception mais je pense qu'il doit être assez facilement décryptable par des logiciels adaptés au déchiffrement. Je m'interresse depuis peu à la cryptanalyse mais je n'ai aucune référence sur ces log de décryptage ou je suppose que la difficulté majeure est de déterminer la longueur de la clé. Si tu as quelques tuyaux sur le concept de ces logiciels de décryptage, ca m'interresse beaucoup.
1 oct. 2004 à 09:39
30 sept. 2004 à 23:43
sur ce , je te laisse!