Cryptage puissant 128 bits quasi-incassable(algorithme baptisé xes)

Soyez le premier à donner votre avis sur cette source.

Vue 10 516 fois - Téléchargée 1 327 fois

Description

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ÏJl—0Þ)¬‚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...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_azerty25
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007
-
Peut etre un peu tard mais j'ai essayé, il est d'ailleur très bien ton code, mais quand on met dans la clé le caractere "^", il sort un mot de passe éronné quand on décrypte mais affiche tout de même un morceau de la chaine a crypter
cs_Warny
Messages postés
478
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015
-
Leirn ->
Pour la portabilité, tu vas sur http://www.go-mono.net/ ils s'en chargent (c'est Novell derrière).
Leirn
Messages postés
30
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
12 février 2004
-
concernant la convertion en c par rapport a c#, je tiens a rappeler ke le c# n est pas tres portable si tu veux aue des non windosiens s interressent a ton code...
cs_Golfy
Messages postés
2
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
4 janvier 2004
-
Merci Warny pour ta brillante explication.
cs_Warny
Messages postés
478
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015
-
=>Golfy
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.