CHIFFRE DE CESAR

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 6 mars 2007 à 22:18
 AzrethUberFan - 9 nov. 2015 à 14:55
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/41756-chiffre-de-cesar

AzrethUberFan
9 nov. 2015 à 14:55
Avec plaisir ! :D
comment contacter une personne aussi forte que toi ?
Marc Zuckerberg
9 nov. 2015 à 14:55
J'aime!
Aurevoir.
Merci, suce moi.
JeTeSuceLaTeub
9 nov. 2015 à 14:53
Azreth tu est FORT ! <3
Jean Claude PlusFaibleQueToi
9 nov. 2015 à 14:52
Oui c'est vrai ! Merci
PlusFortQueToi
9 nov. 2015 à 14:52
bonjour dans ton code le chiffrage de a ne marche pas car la position 26 de ton $Charset n'est pas défini a la ligne :
if ( $Action )
{
if ( ($Result = $Pos + $Clef) > $CharsetLen )
$Result = $Result - $CharsetLen;
}
si on prends z avec un décalage de 1 nous avons une erreur il faut remplacer
if ( ($Result = $Pos + $Clef) > $CharsetLen )
par
if ( ($Result = $Pos + $Clef) >= $CharsetLen )
voila en espérant avoir pu aidé.
amicalement
il faudrait ajouté un = dans la ligne 28 car il y a un bug quand le décalage arrive sur 'a' on obtient une notice
if ( ($Result = $Pos + $Clef) >= $CharsetLen )
PlusFortQueToi
9 nov. 2015 à 14:49
il faudrait ajouté un = dans la ligne 28 car il y a un bug quand le décalage arrive sur 'a' on obtient une notice
if ( ($Result = $Pos + $Clef) >= $CharsetLen )
il faudrait ajouté un = dans la ligne 28 car il y a un bug quand le décalage arrive sur 'a' on obtient une notice
if ( ($Result = $Pos + $Clef) >= $CharsetLen )
bonjour dans ton code le chiffrage de a ne marche pas car la position 26 de ton $Charset n'est pas défini a la ligne :
if ( $Action )
{
if ( ($Result = $Pos + $Clef) > $CharsetLen )
$Result = $Result - $CharsetLen;
}
si on prends z avec un décalage de 1 nous avons une erreur il faut remplacer
if ( ($Result = $Pos + $Clef) > $CharsetLen )
par
if ( ($Result = $Pos + $Clef) >= $CharsetLen )
voila en espérant avoir pu aidé.
amicalement
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
12 nov. 2013 à 00:53
Bonjour Leilou.
comment vous l'exécutez ?
Heu.. c'est du PHP.. donc on ne l'exécute pas proprement dit...

Pour l'utiliser tu copie/colle le code dans ta page PHP et tu l'utilise comme indiqué dans l'exemple :
<?php
$String = 'salut';
echo Cesar($String, 12, TRUE);
?> 
comment vous l'executé???MERCI de me repondre
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
9 mars 2007 à 21:16
Hello

Apres quelques reflexions, je me suis apercu que mon code n'etait pas bugge, bien au contraire ...
Si tu regardes bien (FhX), $Result n'est jamais initalise a NULL car dans

if ( $Action )
{
if ( ($Result = $Pos + $Clef) > $CharsetLen )
$Result = $Result - $CharsetLen;
}

Le if ( ($Result = $Pos + $Clef) > $CharsetLen ) initialise $Result ET le compare a $CharsetLen. A aucun moment $Result a une valeur indefinie ... :p

@++
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
7 mars 2007 à 20:33
Arf mais oui, comment j'ai pas pu voir sa ?
J'ai fusionne plusieurs esquisses d'algo avant d'ecrire celui la, d'ou la presence de $Result... Je retravail sa dessuite !

Merci
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
7 mars 2007 à 20:02
Y'a quand meme un truc qui me chiffone. Imaginons un processus de cryptage (ca marche aussi pour le décryptage) :

# if ( $Action )
# {
# if ( ($Result = $Pos + $Clef) > $CharsetLen )
# $Result = $Result - $CharsetLen;
# }

Si $pos+$clef > $longeur_du_charset Alors $Result -= $longueur_du_charset.

Oui, mais si $pos+$clef < $longueur_du_charset... $Result est NULL.
(pardon, indéfini je devrais dire).
Hors après, y'a ca :
# $Msg[$i] = $Charset[$Result];

$Msg indicé de $i recoit la valeur de $Charset indicé de $Result... oui mais si $Result vaut NULL... y'a pas comme une erreur ? ;)

C'est pareil pour le décryptage.
Vala :)
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
7 mars 2007 à 19:23
non, faire un :
for ($i=0, $len=strlen($Msg); $i<$len; $i++) {
//
}

Simplement pour l'écriture :)
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
7 mars 2007 à 18:56
"mais ca sert a quoi de coder ca ?"
-> culture personnelle (faut bien commencer quelque part)
-> j'ai dit que j'en avais eu besoin et que j'avais rien trouver de palpitant sur phpcs alors je postais sa ou cas ou quelqu'un soit dans la meem situation que moi (et il me fallait en php, pas en js)
-> sur le lien que j'ai donne, l'auteur s'amuse meme a casser une phrase complete en javascript alors en C... autant utiliser une pelleteuse pour manger a la cuilliere ^^

"[...]alors que ca se casse en meme pas une demie seconde[...]"

Relis mon message :

"{...]il est evident que ce type de securite (si on peut appeller sa comme sa tellement c'est faible) est a proscrire imperativement, c'est juste pour l'exemple. N'allait pas me dire que AES, DES RSA & companie sont mieux, je le sais bien ;-)[...]"

C'est pourtant ecris noir sur blanc : je sais que c'est facile a casser d'autant que j'ai lourdement insiste dessus donc je vois pas trop l'interet de ton post (sans vouloir etre agressif ni sur la defensive bien entendu)

"Qu'est ce que je peux arriver à faire des trucs aussi moche des fois :D"
J'avoue ^^ Mais sa reste stylee quand meme ;-) Tu m'impressioneras toujours autant FhX ^^

"$MsgLen strlen($Msg);
> à mettre dans la déclarative du for() :p"

Comment sa ? Faire un for( $i; $i<strlen($Msg); $i++ ) ? Si je ne me trompe pas, sa fait qu'a chaque tour de boucle, je revalue la longueur de la chaine ? Pas top niveau performance... ou alors je comprend mal ce que tu as voulue me dire ?

@++
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
7 mars 2007 à 16:54
Ah si, fallait bien que je sorte un truc spécial optimisation de ouf qui change pas grand chose :D

$MsgLen strlen($Msg);
> à mettre dans la déclarative du for() :p


J'ai pas pu m'en empécher :(
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
7 mars 2007 à 16:52
# if ( $Action )
# {
# if ( ($Result = $Pos + $Clef) > $CharsetLen )
# $Result = $Result - $CharsetLen;
# }
# else
# {
# if ( ($Result = $Pos - $Clef) < 0 )
# $Result = $CharsetLen - ($Result * (-1));
# }

$Result = ( $Action && ( ($Pos + $Clef) > $CharsetLen ) ) ?
($Pos + $Clef) - $CharsetLen :
( !$Action && ( ($Pos - $Clef) < 0 ) ) ?
$CharsetLen - ( -($Pos - $Clef) ) :
NULL;

Qu'est ce que je peux arriver à faire des trucs aussi moche des fois :D
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
7 mars 2007 à 08:34
mais ca sert a quoi de coder ca ? (on en voit partout : ici, sur javascriptfr ect...) alors que ca se casse en meme pas une demie seconde... j'ai code un truc en cpp pour le casser...
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
7 mars 2007 à 01:06
Hello

Merci pour ton commentaire ;-)
Le chiffre de Cesar, c'est un algo de substitution de lettre dans une phrase. Le mieux est que tu regardes ce site : http://www.apprendre-en-ligne.net/crypto/cesar/index.html, il t'expliquera surement mieux que moi.

Je multiplie $Result par -1 pour le rendre positif car il est forcement negatif dans le bout de code que tu indiques. Cela viendrait effectivement a faire un --$Result donc un +$Result mais par habitude, mieux vaut multiplier par -1.

"Le 2d truc : je suis nul en math ... mais vraiment nul hein"
Je parie que je suis encore plus nul que toi, et c'est pas une blague :-( lol

Pour le typage des var, c'est vrai que c'est mieux. Je le fait pourtant quand je fais du C/C++ mais en php, j'ai pas encore l'habitude. J'avais deja remarque sur tes codes que tu le faisais, mais j'arrive pas a l'integrer dans mes codes (surtout quand je travail avec DOM et XPATH... je vois pas ce que je pourrais mettre pour indiquer le type). Il me manque une declaration avant (j'ai commence par le C donc il me faut un int, char ou n'importe quoi d'autres). Je sais que c'est idiot mais je vais quand meme essayer de faire un efort a l'avanenir.

@++
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
6 mars 2007 à 22:18
Hello :-)
Aucune idée de ce qu'est le chiffre de César, mais c'est correctement codé :-)
2 chose simplement : tu devrais prendre l'habitude de typer tes variables. Enfin, "tu devrais"...non, c'est toi qui vois :-) Mais perso, j'aime bien voir par exemple : $sMsg, parce que je sais de suite que c'est une variable de type string, ou $iPos, parce que je sais de suite que c'est une variable de type int.
Mais c'est juste une habitude...
Le 2d truc : je suis nul en math ... mais vraiment nul hein. Mais $Result * (-1), c'est pas équivalent à -$Result ?

Sinon c'est bien, pas pompeux, clair, concis...bien :-)
Rejoignez-nous