Les applications injectives et surjectives sont deux cas différents et les bijectives sont en fait à la fois injectives et bijectives. Pour le visualiser géométriquement dans un espace à deux dimensions, tu peux prendre l'axe des abscisses (x) comme ensemble de départ et l'axe des ordonnées comme ensemble d'arrivé. f(x) = x est clairement bijective, tu prends n'importe quelle valeur en ordonnée, il n'y strictement qu'une valeur correspondante en abscisse. f(x) = x^2 est injective dans R (par exemple, x^2 = -1 n'a aucune solution), mais est surjective dans R+ (x^2 = 0 a une solution, toute les autres images sur l'ordonnée trouvent deux antécédents sur l'abscisse).
Ok je comprends mieux avec un dessin (meme mental :p)
mmh à quoi bon chiffrer des données avec un algo faible si l'on sait qu'une personne vraiment mal intentionnée peut se casser la tête et réussir à tout déchiffrer ?
C'est pas faux XD
Petit supplément questions, qui pourront peut-être t'orienter sur des pistes quant à l'attitude à adopter pour déchiffrer ton algorithme:
Moi j'essaie d'abord de voir si je peux rapporter ton algorithme à quelque chose de connu, car j'ai la chance de pouvoir discuter avec son auteur. Dans un coin de ma tête, je sais que de grands mathématiciens travaillent sur le chiffrement depuis toujours, et qu'une application injective a peu de chances de leur avoir échappé.
Je ne m'y connais pas (encore) assez en cryptologie pour te repondre sur ce point ^^"
Comme on peut chiffrer un message de plusieurs manières différentes, comment ton algorithme arrive-t-il à produire une solution plutôt qu'une autre ? en gros ton algorithme est-il non-déterministe ? as-tu introduit un élément aléatoire ?
- si tu n'a pas introduit d'élément aléatoire, alors la même solution sera toujours utilisée pour coder un message donné. ce qui me laisse penser qu'il y a bien un élément aléatoire.
- si tu as introduit un élément aléatoire, peux-t'il assurer de ne JAMAIS produire deux fois le même résultat en fonction du message crypté ? si tel n'est pas le cas, je pense que l'algorithme est équivalent à un algorithme à clé privée et pour lequel on tenterait d'utiliser des synonymes (malheureusement la langue ne propose pas une infinité de mots donc de synonymes) pour les mots que l'on aurait déjà chiffré auparavant avec le même algorithme.
Il y a 2 elements aleatoires, dont 1 qui ne change pas grand chose au cryptage lui meme, mais si j'en dis trop ca sera peut etre trop facile
Avec une masse suffisante de messages codés, on devrait pouvoir utiliser les méthodes classiques d'attaques d'algos à clé privée/symétrique).
Je ne pense pas que l'on puisse assurer de ne jamais produire deux fois le même résultat pour un message donné. Si l'ensemble d'arrivée de ton algo est effectivement infini, tu ne l'épuisera effectivement jamais, par contre, tu risques rapidement d'épuiser les ressources de ta machine pour chiffrer le moindre message.
Qu'en penses-tu ?
Je t'assure que si, c'est facilement demontrable quand on connais l'algo, on ne peut pas produire le meme resultat a partir de 2 sources differentes.
Les methodes classiques d'attaques d'algos a clef privee/symetrique, il faut qu'il y ait une clef privee/symetrique, non ^^? Apres, pour moi un clef c'est bien des donnees supplementaires au message utilisees pour le crypter d'une certaine maniere et pour savoir le decrypter ? Ou bien je me trompe ^^?
Par exemple une clef de cryptage de Caesar serait "3", avec a<->d du coup...
La table de vijnere est egalement un algorithme a clef ?
Tandis que mon algorithme se rapproche plutot du MD5 du point de vue "pas de clef", j'utilise le message et uniquement lui meme pour le crypter.
Sinon oui pour echanger ses fichiers c'est pas pratique XD