Pamaury
Messages postés341Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention17 juin 2008
-
22 juin 2005 à 10:43
cs_cynix
Messages postés20Date d'inscriptiondimanche 7 novembre 2004StatutMembreDernière intervention 9 mars 2009
-
11 août 2005 à 11:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_cynix
Messages postés20Date d'inscriptiondimanche 7 novembre 2004StatutMembreDernière intervention 9 mars 2009 11 août 2005 à 11:10
je sais c'est crade et moche pardon
cs_cynix
Messages postés20Date d'inscriptiondimanche 7 novembre 2004StatutMembreDernière intervention 9 mars 2009 11 août 2005 à 11:03
une petite alternative pour le rot13 sans avoir à tripoter soi-même l'alphabet dans sa source:
#include <stdio.h>
#include <string.h>
int
main (int ac, char **av){
char *buf;
int i, j, k;
if (ac < 2) return 1;
for (k = 1; av[k] != NULL; k++){
buf = strdup (av[k]);
for (i = 0; buf[i] != '\0'; i++){
for (j = 0; j < 13; j++){
if (buf[i] >= 'A' && buf[i] <= 'z'){
if (buf[i] >= 'A' && buf[i] <= 'Z')
{buf[i] = buf[i]++;if (buf[i] > 'Z')buf[i] = 'A';}
else {buf[i] = buf[i]++;if (buf[i] > 'z')buf[i] = 'a';}
}
}
}
printf ("%s ", buf);
free (buf);
}
printf("\n");
return 0;
}
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 7 juil. 2005 à 20:01
t'as fait que répéter ce que j'ai dit...
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 7 juil. 2005 à 14:19
ui
et bien le codage par rotation s'appelle Cesar
et comme on s'en rend compte,
il est vieux comme le monde et relativement simple
ceci dit, si on sais pas le mode de criptage,
ce n'est pas un mauvais moyen...
simplement, il n'est pas très <<Solide>>
++
Nono.
cs_ng
Messages postés31Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention28 juin 2005 28 juin 2005 à 00:11
c'est pas censé crypté comme je l'ai dit, c'est du ROT13, pas du cryptage, 2ème page trouvée sur google : http://usenetfr.free.fr/rot13.htm
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 27 juin 2005 à 06:57
j'avais posté une source qui cassait tout ce qui était ceasar, celle ci en est une...
le truc, c'est que ton programme ne crypte pas, il cache seulement : pour crypter, il faut une clef or ici...
cs_ng
Messages postés31Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention28 juin 2005 22 juin 2005 à 16:40
c'est pas mon codage, c'est du rot13, si tu connais pas c'est grave quand même et ca ne pretant pasetre effiace.
oui en plus pour le fichier ca ne sert a rien, le shell le fais pour toi :
#code un fichier
$ rot13 < fichier
#code ds un fichier
$ rot13 > fichier
#code fichier1 dans fichier2
$ rot13 < fichier1 > fichier2
#ou encore
$ cat fichier | rot13
#...
pour finir, ce n'est pas censé marcher pour les caractères accentués, tu peux essayer toi même avec lé commande rot :
$ rot
éàèù
éàèù
ce code sert justement à implémenter la commande rot sur les systèmes ou elle existe pas (genre windows)
Pamaury
Messages postés341Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention17 juin 20083 22 juin 2005 à 10:43
donc ton code c'est que la letrre A(1ère lettre de l'alphabet) devient le 13ème lette
le 2ème devient la 14ème.....
çà se fait en une ligne:
val=a_pos+(str[i]-a_pos+13)%26;
C'est pas très efficace comme codage: deux codage de suite=décodage: on a vite fait de trouver comment çà marche .
En plus du pourrais au moins gérer l'entrée et sortie dans un fichier(bien qu'on puisse le faire avec < et >) . En plus çà marche pas pour les caractère accentués et les ponctuations .
11 août 2005 à 11:10
11 août 2005 à 11:03
#include <stdio.h>
#include <string.h>
int
main (int ac, char **av){
char *buf;
int i, j, k;
if (ac < 2) return 1;
for (k = 1; av[k] != NULL; k++){
buf = strdup (av[k]);
for (i = 0; buf[i] != '\0'; i++){
for (j = 0; j < 13; j++){
if (buf[i] >= 'A' && buf[i] <= 'z'){
if (buf[i] >= 'A' && buf[i] <= 'Z')
{buf[i] = buf[i]++;if (buf[i] > 'Z')buf[i] = 'A';}
else {buf[i] = buf[i]++;if (buf[i] > 'z')buf[i] = 'a';}
}
}
}
printf ("%s ", buf);
free (buf);
}
printf("\n");
return 0;
}
7 juil. 2005 à 20:01
7 juil. 2005 à 14:19
et bien le codage par rotation s'appelle Cesar
et comme on s'en rend compte,
il est vieux comme le monde et relativement simple
ceci dit, si on sais pas le mode de criptage,
ce n'est pas un mauvais moyen...
simplement, il n'est pas très <<Solide>>
++
Nono.
28 juin 2005 à 00:11
27 juin 2005 à 06:57
le truc, c'est que ton programme ne crypte pas, il cache seulement : pour crypter, il faut une clef or ici...
22 juin 2005 à 16:40
oui en plus pour le fichier ca ne sert a rien, le shell le fais pour toi :
#code un fichier
$ rot13 < fichier
#code ds un fichier
$ rot13 > fichier
#code fichier1 dans fichier2
$ rot13 < fichier1 > fichier2
#ou encore
$ cat fichier | rot13
#...
pour finir, ce n'est pas censé marcher pour les caractères accentués, tu peux essayer toi même avec lé commande rot :
$ rot
éàèù
éàèù
ce code sert justement à implémenter la commande rot sur les systèmes ou elle existe pas (genre windows)
22 juin 2005 à 10:43
le 2ème devient la 14ème.....
çà se fait en une ligne:
val=a_pos+(str[i]-a_pos+13)%26;
C'est pas très efficace comme codage: deux codage de suite=décodage: on a vite fait de trouver comment çà marche .
En plus du pourrais au moins gérer l'entrée et sortie dans un fichier(bien qu'on puisse le faire avec < et >) . En plus çà marche pas pour les caractère accentués et les ponctuations .