$CESAR(CLE,TEXTE) > L'ALGORITHME DE CÉSAR

cs_Kolibot Messages postés 817 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 19 avril 2004 - 11 déc. 2003 à 20:17
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 - 14 déc. 2003 à 10:16
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/18632-cesar-cle-texte-l-algorithme-de-cesar

cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
14 déc. 2003 à 10:16
Le code est vraiment plus court Koli, bon boulot, dommage qu'il soit moins rapide que le miens :(
cs_Kolibot Messages postés 817 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 19 avril 2004
14 déc. 2003 à 00:45
Bon j'ai quand même envie de mettre ce que j'avais fait, l'histoire de dire que j'ai pas tenter d'optimiser pour rien :

alias cesar {
if !$1 || !$2- { halt }
var %a $gettok($2-,0,32),%a2 0
while %a > %a2 { inc %a2 | var %a3 = $+(%a3, ,$cesar.conv($gettok($2-,%a2,32),$1)) }
unset %cesar.*
return %a3
}

alias alphajump {
if !$1 || !$2 { halt }
var %tmp 0,%i 1
while %i <26 { %cesar. [ $+ [ %i ] ] $chr($calc(96 + %i)) | inc %i }
while (26 > %tmp) { inc %tmp | if %cesar. [ $+ [ %tmp ] ] == $1 { if $calc(%tmp + $2) > 26 { return %cesar. [ $+ [ $calc($calc(%tmp + $2) - 26) ] ] } | return %cesar. [ $+ [ $calc(%tmp + $2) ] ] } }
}

alias cesar.conv {
if !$1- || !$2 { halt }
;###/Variable à incrémenter plus tard###
var %cesar.tmp1 = 0
;###/Texte && cle###
var %cesar.txt $1,%cesar.key $2
;###/Alphabet en variable###
var %i = 1
while %i <26 { %cesar. [ $+ [ %i ] ] $chr($calc(96 + %i)) | inc %i }
while $len(%cesar.txt) > %cesar.tmp1 { inc %cesar.tmp1 | var %cesar.fin = %cesar.fin $+ $alphajump($left($mid(%cesar.txt,%cesar.tmp1),1),%cesar.key) }
if $len(%cesar.txt) == %cesar.tmp1 { return %cesar.fin }
}
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
13 déc. 2003 à 19:38
Hm oui, peut-etre que Jules César lui meme utilisait uniquement un décallage de 13 caractères pour communiquer, mais sinon, l'algorithme de césar autorise un décalage compris entre 1 et 26.

Tout les sites sur la cryptologie que j'ai trouvé sur google le disent :(
cs_ReMi34 Messages postés 1025 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 28 mars 2005 2
13 déc. 2003 à 18:24
Ben le VRAI langage secret de César, c'est décalé de 13 caractères.
Du moins, c'est ce que m'a dit mon prof de grec, et il est trés cultivé :)

Mais sinon c'est pas grave ok :)
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
13 déc. 2003 à 12:40
ReMi34 : non, ROT 13 est basé sur le meme principe, sauf avec un décallage UNIQUEMENT de 13 caractères, tandis que le cesar, permet de varier le décallage.
cs_ReMi34 Messages postés 1025 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 28 mars 2005 2
13 déc. 2003 à 11:42
Appelé aussi le ROT 13 ...
cs_Kolibot Messages postés 817 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 19 avril 2004
12 déc. 2003 à 08:17
:p
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
12 déc. 2003 à 07:19
De toute façon, 7 ms ou 14 ms, cela reste invisible à l'oeil nu, mais je tiens à souligner que j'avais raison, mon code est plus rapide :P
cs_Kolibot Messages postés 817 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 19 avril 2004
11 déc. 2003 à 20:17
J'ai fait le calcul... ton script met 7ms pour encoder avec 105 lignes, ce que je t'ai montré fait : 33 lignes et met 14ms pour encoder... C'est une question de choix après... 9/10
Rejoignez-nous