J'ai eu envie il y a environ une semaine de m'essayer a la cryptologie :)
Après avoir trouvé plusieurs infos intérréssantes je me suis lancé dans un algorithme que j'ai imaginé en cours de français :P et que j'ai par la suite arrangé.
Je vous présente donc l'algorithme XES (X-Encryption System):
Cryptage symétrique
Non linéaire
Non redondant
Non cyclique
Etc...
Voici le procédé de cryptage:
l'algo prend des blocs de 128 bits (16 caractères) qu'il place dans une matrice 4*4. Des changements de place sont ensuite effectués, un autre changement est ensuite fait, j'appelle ça la "serpentisation" car ça déplace les caractères comme un serpent :D
Si la chaine a crypter < 16 octets, ce qui manque est remplacé par des espaces.
Chaque caractère va ensuite subir un cryptage complexe qui dépend de plusieurs paramètres.
Puis le bloc est crypté :)
Pour mieux comprendre, regardez la CAPTURE
Un texte crypté est arrondi a un multiple de 16, par exemple un texte de 23 octets donnera un cryptage de 32 octets mais un texte de 32 octets donnera un cryptage de 32 octets
Quelques exemples de cryptage:
Clé: A
Chaine: AAAAAAAAAAAAAAAA
Sortie: OÉê.ÜZÕÿH¢T3íù"5çYù·|pCäÎÈ?
Clé: AA
Chaine: AAAAAAAAAAAAAAAA
Sortie: åù"Su^ï£ÛfòDÁº(|
Q?%VíeVå'¶kB]
Clé: B
Chaine: AAAAAAAAAAAAAAAA
Sortie: =µauâ"rÌ-~jÆÝÈ-»ix<sÏÇ(Pc1¥æÇ"
Clé: AAAA
Chaine: AAAAAAAAAAAAAAAA
Sortie: øñc|ãLÙÄL.?uW¡S`¡²ñP, }»Èo¢.4
Clé: cryptage
Chaine: Ceci est un exemple de cryptage avec l'algorithme XES
Sortie: o«=ØÚ~øë®+¬]o> z^BÔædGáZ@(qAØ-j¹0'ûdæódé,î&³f`ø(:
Pour tester son efficacité je met quiconque au défi de me décrypter ce texte et
de me donner la clé(vous avez un avantage: l'algorithme ;):
{
ìâcZV¡3 Aßçï'Á#ûä8MD]ÓÕªÖIAMñBõ£·ý¿3 ÆÒ"£î`
ôÔQýt!€SØ#ú! 4 çJ!æÿ° Åä#®tYÛ+`Ôe\þeÏJl0Þ)¬O€
ÑBntcñùÞTz¢sª>yÄ0áâ0öbûæ8:
3üYº<¢F
}
ATTENTION: VBFrance déforme un peu les caractères donc vous ne pourrez rien faire avec le texte ci dessus, le message crypté se trouve dans le Fichier A LIRE.txt du ZIP
Source / Exemple :
Tout la magie est dans le zip lol
Conclusion :
Je cherche quelqu'un qui serais capable de traduire mon algo en C# ou en C++ mais plus en C# que C++. Voila l'annonce est faite :P
Pour toute amélioration à propos du code, je suis preneur :)
Vos critiques sont les bienvenues (positives ou négatives. mais pas trop négatives non plus :P)
KaViDee
Normalement, plus de bugs...
30 août 2004 à 16:36
20 janv. 2004 à 13:41
Pour la portabilité, tu vas sur http://www.go-mono.net/ ils s'en chargent (c'est Novell derrière).
20 janv. 2004 à 13:32
4 janv. 2004 à 09:03
1 janv. 2004 à 21:40
En fait ça dépend
On peut considerer une fonction de cryptage de la façon suivante :
soit une f une fonction réversible,k une clef, m une valeur représentant une donnée et x le message codé
On peut écrire
x = f(k, m)
comme f est reversible on a aussi
m = f-1(k, m) (f-1 est la fonction inverse de f)
il existe des cas où f-1 = f (cas de la fonction xor par exemple)
ou plus souvent des cas où f-1(k) = f(-k) (addition)
Si on utlise de telle fonction un codage supplémentaire n'entrainera pas une plus grande complexité du message codé. Je m'explique
dans le premier cas f2(k) f(f(k)) comme f-1 f on peut ecrire
f2(k) f-1(f(k)) k on revient donc au message
dans le deuxième, on tombe sur une multiplication simlpe de la clef
Dans les deux cas on ne gagne pas en complexité
Dans le cas présenté ici, l'avantage de la substitution (serpentisation) c'est que l'inverse de la fonction n'est pas la fonction elle même et que appliquer plusieurs fois la fonction ne revient pas à modifier la clef pour n'appliquer qu'une fois la fonction.
La réponse à ta question doit avoir une approche mathématique (Renseigne-toi sur la théorie des corps finis). Tout dépend en fait de la (ou des) fonction(s) utilisée(s).
Pour la petite précision ta question est mal posée : si ton message codé une deuxième fois était strictement indéchiffrable ça ne serait pas interressant (vu que plus personne ne pourrait le lire)
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.