lemonwarez
Messages postés26Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention 2 juillet 2010 16 déc. 2009 à 17:14
Tu m'impressionnera toujours Nementon ;)
NightMare.
cs_Nementon
Messages postés21Date d'inscriptiondimanche 27 janvier 2008StatutMembreDernière intervention25 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és2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 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és9Date d'inscriptionsamedi 6 juin 2009StatutMembreDernière intervention28 septembre 20162 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és2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 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és9Date d'inscriptionsamedi 6 juin 2009StatutMembreDernière intervention28 septembre 20162 7 déc. 2009 à 14:42
essaie d'implementer avec le des(data encrytion system)
c'est puissant
cs_Nementon
Messages postés21Date d'inscriptiondimanche 27 janvier 2008StatutMembreDernière intervention25 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és21Date d'inscriptiondimanche 27 janvier 2008StatutMembreDernière intervention25 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és2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 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és2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 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és2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 6 déc. 2009 à 01:19
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.;)
16 déc. 2009 à 17:14
NightMare.
8 déc. 2009 à 01:02
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)
7 déc. 2009 à 16:54
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.
7 déc. 2009 à 16:34
je sors pas du cadre , je propose uniquement vu la securite et la motivation informatique
7 déc. 2009 à 15:48
7 déc. 2009 à 14:42
c'est puissant
6 déc. 2009 à 03:29
6 déc. 2009 à 03:02
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)
6 déc. 2009 à 01:40
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));
}
}
6 déc. 2009 à 01:38
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.
6 déc. 2009 à 01:19
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.;)