CRYPTAGE AVEC UN ENDOMORPHISME INVOLUTIF

cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 - 28 févr. 2004 à 19:07
Mind4130 Messages postés 5 Date d'inscription dimanche 22 mai 2005 Statut Membre Dernière intervention 31 août 2007 - 18 mai 2006 à 19:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/20824-cryptage-avec-un-endomorphisme-involutif

Mind4130 Messages postés 5 Date d'inscription dimanche 22 mai 2005 Statut Membre Dernière intervention 31 août 2007
18 mai 2006 à 19:50
En lisant le "je pense que quelqu'un de bien entraînné avec un bon niveau en math pourrait le casser sans trop de mal." jme suis dit que comme j'y connait vraiment rien en maths, que mon niveau de scripting est loin d'exeller et que j'ai jamais utilisé de hash tables, ça risquait d'être un défi assez marrant et donc je regarde vite fait comment marche ce bordel avec $crypte_invo(test matrice involution) et je fais rapidement cet alias:
alias breakinvo {
var %z $len($1), %ù $numtok($1-,32), %k $1-, %u 1, %ù^ %z, %return
while (%ù) {
if ($len($gettok(%k,%ù,32)) !%z) { %k $instok(%k,$str($chr(149),$calc(%z - $ifmatch)),%ù,32) }
dec %ù
}
%k = $replace(%k,$+($chr(149),$chr(32)),$chr(149))
var %i 1, %ù $numtok(%k,32)
if ($hget(breakinvo).size) { hfree breakinvo }
hmake -m breakinvo 100
while (%z) {
while (%i <= %ù) { hadd -m breakinvo $+(bi,%z) $+($hget(breakinvo,$+(bi,%z)),$mid($gettok(%k,%i,32),%z,1)) | inc %i }
%ù = $numtok(%k,32)
%i = 1
dec %z
}
; hsave breakinvo $+(breakinvo,$r(1,999),.txt)
%i = 1
while (%i <%ù^) { %return $instok(%return,$hget(breakinvo,$+(bi,%i)),%i,32) | inc %i }
echo -a $remove(%return,$chr(149))
}

Et c'est avec une jubilation humide que je contemple le "tmi ean stv tro il cu et i o n" redevenir "test matrice involution", et c'est avec un soupir profond qu'au terme d'autre test je m'apperçoit qu'en fait ça marche que sur cette phrase. J'en conclus qu'il est impossible de casser le cryptage, du moins avec mon experience relativement limitée du mirc, pourquoi ?
L'alias rajoute des $chr(1) pour que tout les mots de la phrase aient le même nombre de caracteres et faire un tableau régulier puis les supprime une fois "l'involution" faite, c'est donc (a mon humble avis) impossible de prédire où les remettre pour refaire le tableau original puisque le rendu n'est pas logique (a moins de retourner les $chr(1) avec le reste), et mon alias de decryptage ne peut marcher seulement si le nombre de chr des mots va croissant ou décroissant, comme dans mon test. Néanmois je me suis quand même bien amusé sur ce code qui m'a finalement servi de tutorial pour hash table :p (même si je suis vachement frustré).

Parcontre je serais très contant si quelqu'un me cloue le bec et me prouve que c'est faisable :p
cs_Lucifer666 Messages postés 2 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 30 mai 2005
30 mai 2005 à 18:39
Eh eh comme on se retrouve MorTLStValent1
Moi aussi kerrigan j'ai compris ton code, et j'aprecis que quelqu'un s'attache a montere l'utilité des maths en informatique
Le truc qui aurrait etait bien c'est trouver une matrice nilpoltante en fonction d'une clée, comme sa le code serait moins cassable, mais bon c'est chaud de faire ca.

En tout cas tres bonne idée
MorTLStValent1 Messages postés 24 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 1 janvier 2005
28 avril 2004 à 10:32
Je n'ai pas encore les connaissances mathematiques pour t'aider en homeomorphisme, je ne connais pas les nuplets. En tout cas bonne continuation !!!
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
28 avril 2004 à 00:57
ben j'ai fait un addon pour que le mirc gere les matrices ... je trouvais que ça manquait alors je l'ai codé

www.ircfr.com/code.aspx?ID=20731

jette un coup d'oeil ça peut tjs te servir. c'est encore incomplet, il manque la trace , et la methode d'inversion des matrices est nulle. Je vais changer ça bientot

je vais aussi optimiser le code en passant tout en hashtable, tout en gardant un fichier ini deriere pour la sauvegarde. ya un projet d'interface aussi mais je ne vois pas encore comment faire...

le prochain cryptage que j'ai en projet utilisera un homeomorphisme :
celui qui permet de d'associer a un nuplet un module et des arguments grace au théorème du relèvement. ( disont que en 2d ça serait un passage en coordonnée polaire pour faire simple)

faut que je vois si ça marche et si en mirc le chemin est vraiment bijectif.. vue que ça arrondit les calculs je pourrais perdre de l'info en chemin.
MorTLStValent1 Messages postés 24 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 1 janvier 2005
27 avril 2004 à 15:03
Si si j'ai le concours de l'ecole des mines je suis en 1ere année de CPGE mdr, tu vois je revise en cherchant a comprendre ton algo c'est que j'aurai au moins assimilé les endomorphismes, isomorphismes, automorphismes et toutes les notions de structure d'algebre lineaire rien qu'avec un algo de cryptage mdr. Moi qui pensait galerer en maths, ca fait plaisir de voir que je sais des choses lol et ca me rassure pour ce concours :)

Bonne journée a toi, et si g le temps j'essaierai ptete de faire un algo de cryptage avec le theoreme des restes chinois ou avec des restes de division euclidienne (faut que je trouve le temps :-\ ...). Deja la j'essaie de faire fonctionner un compteur de kicks pour chaque $address($knick,2) avec des hash donc des matrices n,2. Ce qui est dommage c de ne pas pouvoir faire de matrices n,p notamment n,n pour d'eventuelles simplifications ou pour utiliser les algebres TI (triangle inferieur) et TS (triangle superieur) dans les matrices (ce qui pourrait la simplifier) pour des algo de cryptage une fois de plus, ou pour des resolutions d'equations, ca aurait pu etre sympa de faire un dialog qui resoud des systemes d'equations lineaires !
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
27 avril 2004 à 14:40
haaaaaaa enfin quelqu'un qui comprend mon code!!! qu'est ce que ça fait plaisir dit donc !! et puis t'as pas des concours a préparé toi !!!! pas bien ça :D
MorTLStValent1 Messages postés 24 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 1 janvier 2005
27 avril 2004 à 10:51
Ce qui est aussi interessant dans ton code Kerrigan, c'est que tu as montré que l'on peut utiliser pas mal de choses de l'algebre lineaire : des algebres, espaces vectoriels ou anneaux (voire groupes mais bon ca serait trop facile a casser le cryptage) assez exotiques pour rendre le cryptage beaucoup plus difficile a casser.

En tout cas c'est du bon boulot et pour ceux qui ont rien compris a ce que j'ai dit, venez faire un tour en prepa :) (ou a la fac).
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
13 mars 2004 à 17:56
Si tu ne sais pas ou il faut le mettre et a quoi ça sert tu n'en a pas besoin. Mais c'est reducteur de te dire ça donc je vais quand meme t'expliquer.
Faut mettre ça dans les remotes et pour le lancer tape :
//echo -a $crypte_invo(la phrase que tu veux)

ça sert a crypter ... (apprend a lire:) )
Elnath Messages postés 14 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 31 mai 2004
13 mars 2004 à 13:07
moi j'aurais 2 questions :
ou faut il mettre ça ?
et a quoi ça sert ?

merci de me répondre
cs_HeXoR Messages postés 165 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 15 avril 2010
6 mars 2004 à 17:35
Oki oki je vais attendre la fac alors lol... sinon je trouve ça cool 10 :)
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
6 mars 2004 à 16:59
ben pour faire simple et pour que tout le monde comprenne un matrice c'est juste un tableau avec des éléments dedans. Aussi pour les curieux , transposer une matrice revient a échanger les lignes est les colones
exemple :
1 2 3
4 5 6
7 8 9

devient une fois transposé

1 4 7
2 5 8
3 6 9

vu que le code utilise cette fonction un petit exemple ne va aps vous faire de mal.

Sinon Hexor va falloir attendre la fac pour que tu vois vraiment les matrices. Ceci dit les vecteurs sont des matrices particulieres. Une chaine de cractere c'est aussi une matrice (mais on s'éloigne du sens mathématique). En fait un (bon) codeur utilise des matrices tout le temps sans s'en rendre compte...
cs_Tiboug Messages postés 68 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 7 août 2004
6 mars 2004 à 16:34
tu m'epates tous les jours kerrigan ^^
cs_HeXoR Messages postés 165 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 15 avril 2010
6 mars 2004 à 15:59
tu pourrais déjà m'expliquer ce qu'est une matrice lol ? je n'ai qu'un niveau de 2nd alors les maths sont pas encore trop poussés... :/
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
29 févr. 2004 à 15:20
je suis décolé d'etre si peu clair ... tu voudrais des commentaires aux endroitsimportant du code ?
j'aime pas trop faire ça je trouve que ça allonge pour rien mais bon la prochaine fois j'y penserais.
Dark-Dragoon Messages postés 228 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 26 octobre 2004
29 févr. 2004 à 14:50
alias decode_les_sources_de_kerigan {
set %chemin $1
var %a 1
while ($read(%chemin,%a)) {
return $encode($read(%chemin,%a),1)
inc %a
}
}
sa doit marcher :/
cs_babass Messages postés 72 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 12 septembre 2004
29 févr. 2004 à 14:38
Je crois parler au nom de pas mal de personnes en suppliant qqun de bien vouloir créer un pti snipset du genre :

$decode_les_sources_de_Kerrigan

Parce qu'on voudrait bien comprendre lol.

Merci d'avance
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
28 févr. 2004 à 21:52
ben en fait c'est assez rapide et j'ai remarqué que ce qui ralentit c'est pas le nombre de boucles a la suite c'est le nombre de boucle imbriquées ...

exemple
alias boucle_de_la_mort {
;a ne surtout pas essayer !!!!
var %itr1 1 ,%itr2 1 ,%itr3 = 1
while ( %itr1 <= 255 ) {
while ( %itr2 <= 255 ) {
while ( %itr3 <= 255 ) {
inc %itr3
}
}
inc %itr2
}
inc %itr1
}
cette boucle la va faire 255*255*255 opérations !!!!!!
( 16 581 375 :) )

alors que la :
alias boucle_de_la_mort2 {
var %itr1 1 ,%itr2 1 ,%itr3 = 1
while ( %itr1 <= 255 ) { inc %itr1 }
while ( %itr2 <= 255 ) { inc %itr2 }
while ( %itr3 <= 255 ) { inc %itr3 }
}
ne fera que 3*255 opérations donc ça ne pose pas de problème a priori . Je n'ai jamais eu le moindre problème de temps avec ce code la ...
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
28 févr. 2004 à 19:07
Toujours aussi incompréhensible tes sources faisant allusion au math :P (ce propos ne tiens que pour moi, à moins que d'autres scripteurs aient aussi des lacunes en math ?)

Je n'ai pas testé ton code, mais ces 5 boucles, c'est pas un peu long avec une longue chaine de caractère à crypter ? (malgrès les htable)

En tout cas, le cryptage reste intéréssant, plus la chaine est longue, plus il est dur de casser le cryptage, comme la pluspart des algorithmes.
Rejoignez-nous