CRYPTAGE SIMPLE

acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 - 30 déc. 2007 à 11:32
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 31 déc. 2007 à 21:52
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/45219-cryptage-simple

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
31 déc. 2007 à 21:52
Le 4 c'est que tu allouais 32000 octets de mémoire mais tu mettais tout le fichier dedans sans tester quoi que ce soit.
Résultat, si tu avais eu un fichier plus gros que 32000, ton programme se serait terminé par un débordement tampon.
TrD_ Messages postés 7 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 29 mars 2008
31 déc. 2007 à 20:18
SAKingdom j'ai saisie ton message bien que ton petit 4 était douteux, bref je ne comprend pas pourquoi cela marchait avant mais bon cela a améliorez ma source et je tant remercie.
Si jamais tu rencontre d' autre erreur fais moi en part.

Si quelqu'un peut me dire comment craqué un fichier crypter par cette fonctions j'aimerai bien créer un contre programme pour cette techniques j'ai déjà quelque projets mais tous n'aboutissent pas pourtant mon programme est loin de sécuriser un fichier aussi bien que XOR ou PGP ...
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
31 déc. 2007 à 17:20
for(i = 0 ; i < strlen(pbuf) ; i++)

1. Ne jamais mettre strlen dans une boucle quand la taille ne change jamais. Calcule la taille de la chaine avant.

2. Même en calculant avant, je vois mal comment strlen pourra te donner la taille puisque strlen cherche le 0 de fin de chaine et ta chaine n'en contient tout simplement pas.

3. Aucun besoin de strlen. fread te retourne le nombre d'éléments qu'elle à lu.

4. Tu fais quoi si ton fichier fait plus que 32000 octets ?

char *pbuf = (char*)malloc(32000);
int j, i;
while((j = fread(pbuf, sizeof(char), 32000, f1)))
for(i = 0 ; i < j ; i++)
{
printf("%ld ", n);

pbuf[i] -= n;
}
TrD_ Messages postés 7 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 29 mars 2008
31 déc. 2007 à 14:35
Merci des conseils et de l' informations (taille), j' en ai tenu compte et j' ai améliorez ma source. Dites moi si d' autre problèmes persiste et si le cryptage utilisé est sécurisé et sinon comment le "craqué" par un programme.
Merci.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 déc. 2007 à 11:52
Si tu utilises API Windows alors sera tout API, exit fread() et toute autre fonction libc standard.

CreateFile()
GetFileSize[Ex]()
ReadFile()
WriteFile()
CloseHandle()

A mettre tout le fichier dans un buffer, il y a risque de taille.

#define BUFSIZE 4096
pbuf = (char*) malloc(BUFSIZE);
et tu boucles sur taille buffer tant qu'il reste des octets non lus du fichier source. C'est assurance d'aller au bout sans risque d'erreur mémoire.
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
31 déc. 2007 à 11:52
regarde ce que la fonction fread renvoie

sinon pour avoir la taille du fichier il y a fseek ftell

fseek(f,0,SEEK_END);
int taille = ftell(f);
fseek(f,0,SEEK_SET);
TrD_ Messages postés 7 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 29 mars 2008
31 déc. 2007 à 11:40
Désolé, lol, j' ai vraiment honte j' ai bien saisie l' utilisation de l' allocution dynamique mais ceci
"fread(pbuf, sizeof(char), QuantiteIci, f1);" me pose quelque souci la fonction lit tant d' octet comme prévu mais s' arrête j' ai réfléchi et j' ai abouti sur la solution que il me faut la taille du fichier en Octets pour pouvoir l' assigner a la variable, ici, "QuantiteIci".
Donc, j' ai cherché comment connaître la taille du fichier mais je n' ai toujours pas compris comment faire.
D' un coté je n' ai pas trouvé car je ne veut pas d' une fonctions toute faite d' une fonctions API WIN32 .
Si quelqu' un peut m' axer dans mes recherches merci.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 déc. 2007 à 23:08
char *pbuf;
pbuf = (char*) malloc(32KoParExemple);
if(!pbuf) return;
fread sait lire autant que tu veux et non 1 seul octet.
fread(pbuf, sizeof(char), QuantiteIci, f1);
...
free(pbuf); // QUAND PLUS BESOIN
TrD_ Messages postés 7 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 29 mars 2008
30 déc. 2007 à 22:43
Pouvez vous préciser les erreurs et les corrections que je dois apporter.
La lecture par octet étant mauvaise quelle mauvaise quelle fonctions aurais je du utiliser (fscanf(), fgets(), ...).
Merci, pour la remarque elle permet de m' améliore, pour ce qui est du commentaires de ACX01B est t' il vraiment nécessaire de crypter la clé sachant que celle ci doit être préservé uniquement par l' utilisateur?
J' attend de nouvelles informations pour modifier et améliorer au mieu ma source merci.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 déc. 2007 à 20:13
Ceci relève de l'exercice perso qui n'apporte rien à ceux qui le liront si ce n'est de mauvaises habitudes.
Un fichier ne se lit pas octet par octet, ça se traite par bloc dans un buffer.
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
30 déc. 2007 à 11:32
le fichier contenant la clé il faut le crypter aussi :)
Rejoignez-nous