ALGORITHME DE CÉSAR SUR LA TABLE ASCII

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 6 déc. 2009 à 01:19
lemonwarez Messages postés 26 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 2 juillet 2010 - 16 déc. 2009 à 17:14
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/50930-algorithme-de-cesar-sur-la-table-ascii

lemonwarez Messages postés 26 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 2 juillet 2010
16 déc. 2009 à 17:14
Tu m'impressionnera toujours Nementon ;)

NightMare.
cs_Nementon Messages postés 21 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 25 mai 2010
8 déc. 2009 à 01:02
Oui, oui, c'est effectivement hors contexte de la source, m'enfin c'est moi aussi, qui suis partis en free style à la base ; )

Merci Kals1986 pour l'info, je regarderai ca, mycrypt aussi en php pourquoi pas, je les prends pour infos persos, mais pas d'énervement, il y à tellement peut à dire sur la source qu'on peut se permettre de papoter voyons ^^

(Ps : Notons bien que rien n'est spécifié sur les limites de la porté des posts de la partie "commentaires et avis" dans la charte de bonne conduite)
->(Aouch, hérésie, la sang risque de couler à flot)
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
7 déc. 2009 à 16:54
Si, tu sors du cadre : cette source présente une implémentation de l'algorithme de César. Elle ne prétend pas fournir un algorithme de chiffrement sécurisé. L'auteur a, me semble-t-il, parfaitement conscience des limitation de cet algorithme de chiffrement.
Utiliser un autre algorithme pour chiffrer n'aurait pas de sens DANS CETTE SOURCE qui n'a pas cette vocation.
Restons donc dans le cadre de ce que propose l'auteur.
Si quelqu'un cherche un algorithme pour chiffrer de manière sécurisée ses données, il utilisera plutôt la librairie mcrypt de PHP. Ici, on montre comment implémenter l'algorithme de César, point.
kals1986 Messages postés 9 Date d'inscription samedi 6 juin 2009 Statut Membre Dernière intervention 28 septembre 2016 2
7 déc. 2009 à 16:34
le cesar est facilement dechiffrable tandis que le des est beaucoup plus complique
je sors pas du cadre , je propose uniquement vu la securite et la motivation informatique
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
7 déc. 2009 à 15:48
L'algorithme de César avec DES, ce n'est plus l'algorithme de César... C'est du DES. Faut pas tout mélanger quand même.
kals1986 Messages postés 9 Date d'inscription samedi 6 juin 2009 Statut Membre Dernière intervention 28 septembre 2016 2
7 déc. 2009 à 14:42
essaie d'implementer avec le des(data encrytion system)
c'est puissant
cs_Nementon Messages postés 21 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 25 mai 2010
6 déc. 2009 à 03:29
Édit : j'ai rien dis, php est un bon, il gère ca lui même comme un grand, je laisse ma fonction hybride du coups, tiens je le nomme même algorithme du champi pour l'occase, hop ;)
cs_Nementon Messages postés 21 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 25 mai 2010
6 déc. 2009 à 03:02
Héhé, oui tout à fait, j'ai hésité à le faire sur deux lignes, mais, comme c'est dans la vision de le partager aux débutants tout débutants, je me suis dis qu'il ne valait mieux ne pas faire trop tordu ; )

Pour l'algo de césar, effectivement, je ne n'avais pas pensé sur que coups, que la deuxièmes fonction, se transformée tellement qu'elle n'était plus de César (Je ne suis pas du matin, faut croire ;)

Intéressant le code de la SPL, tes remarques aussi, étant donné que je débute en crypto.

Par contre, ce que je vais rajouter, c'est une petite condition pour eviter de depasser le 250em caractères de la table ACSII (Si mes souvenir sont bons).
Au début je m'étais dis, que c'était futile, m'enfin bon, ma source est incomplète sans ca, donc si quelqu'un repasse par ici, source modifier. (J'en profite pour enlever la deuxièmes fonction)
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
6 déc. 2009 à 01:40
Oups, au temps pour moi... même si ça fonctionne, autant utiliser la variable $char :

function caesar($string, $offset, $mode) {
foreach ($it = new ArrayIterator(str_split($string)) as $char) {
$string[$it->key()] = chr(ord($char)+$offset*pow(-1, intval((bool) $mode)+1));
}
}
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
6 déc. 2009 à 01:38
Avec un itérateur de la SPL :

function caesar($string, $offset, $mode) {
foreach ($it = new ArrayIterator(str_split($string)) as $char) {
$string[$it->key()] = chr(ord($string[$it->key()])+$offset*pow(-1, intval((bool) $mode)+1));
}
}

On pourrait faire encore un peu plus propre avec la classe StringIterator que j'avais publiée il y a quelques temps.
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
6 déc. 2009 à 01:19
Salut,

Toi aussi tu te compliques la vie ;)

for ($i=0; $i<$wLenght; $i++) {
$word[$i] = chr(ord($word[$i])+$offset);
}
return $word;

Le mode n'est pas utile : si on connait la valeur de $offset, il suffit de passer son opposé en argument.
Sinon, je crois que tu n'implémentes pas correctement l'algorithme de César, qui est pourtant d'une simplicité déconcertante...
http://fr.wikipedia.org/wiki/Chiffrement_par_d%C3%A9calage
On décale toujours d'une valeur fixe : la valeur du décalage n'est pas fonction de la position du caractère dans la chaîne chiffrée, contrairement à ton implémentation. En fait, ton implémentation est à mi chemin entre le chiffre de César et le chiffre de Vigenère : un décalage fonction de la position du caractère dans la chaîne, mais sans clé (contrairement à Vigenère ou Vernam qui en utilisaient une).

En gardant l'argument $mode et en poussant un peu, on peut même utiliser la même boucle pour additionner ou soustraire :
<?php
function caesar ($string, $offset, $mode = 1) {
$len = strlen($string); $coeff (1 $mode) ? 1 : -1;
for($i=0 ; $i<$len ; $i++) {
$string[$i] = chr(ord($string[$i])+$offset*$coeff);
}
return $string;
}
?>

Désolé pour l'indentation, on peut pas faire mieux dans les commentaires...

Et avec un iterateur, on pourrait faire ça en une seule ligne... Arf.;)
Rejoignez-nous