begin process at 2008 07 19 16:37:30
1 212 905 membres
227 nouveaux aujourd'hui
14 165 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

YOYOMD5 - CALCUL ET AFFICHAGE DE LA CLEF MD5 D'UN FICHIER


Information sur la source

Catégorie :Fichiers / Disque Classé sous : yoyomd5, yoyo, md5, clef, hachage Niveau : Débutant Date de création : 11/08/2006 Date de mise à jour : 30/08/2006 10:06:45 Vu / téléchargé: 4 518 / 488

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (22)
Ajouter un commentaire et/ou une note

Description

Ce petit programme vous permet de choisir un fichier, via une boîte de dialogue Windows ou par drag & drop sur la fenêtre, puis de calculer automatiquement sa clef MD5.
Je sais que ce type de programme n'est pas le premier du genre, je n'attends donc aucun commentaire particulier.
Cela dit, si vous repérez des erreurs dans le programme, n'hésitez pas à m'en toucher un mot.
D'avance merci.

Conclusion

Pour tester le programme, renommer le fichier YoyoMD5.ex_ en *.exe.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

13 août 2006 14:59:48 :
Corrections en rapports avec les commentaires.
26 août 2006 22:27:38 :
Style XP + drag & drop
30 août 2006 10:06:45 :
Rajout de l'exe à renommer de YoyoMD5.ex_ à YoyoMD5.exe
  • signaler à un administrateur
    Commentaire de BruNews le 11/08/2006 10:06:44 administrateur CS

    strncpy(PIcone.szTip, Tip, strlen(Tip));
    Quel intérêt d'utiliser la version 'n' par rapport à strcpy si tu n'as pas de controle de longueur ??? Ici tu ne fais que parcourir la chaine 2 fois (strlen) au lieu d'1.

  • signaler à un administrateur
    Commentaire de vecchio56 le 11/08/2006 10:29:16 administrateur CS

    On dirait que c'est une manie
    http://www.cppfrance.com/infomsg_CONVERTIR-CHAR-CHAR_794339.aspx
    Ca n'a vraiment aucun intérêt de faire ca
    Pour empêcher un débordement de PIcone.szTip, il faut limiter la copie à la taille dispo dans PIcone.szTip et pas à la longueur de Tip

  • signaler à un administrateur
    Commentaire de Joky le 11/08/2006 10:37:36

    char szCurDir[MAX_PATH];
    char *c;

    c = szCurDir + GetCurrentDirectory(MAX_PATH, szCurDir);

    if(*(c-1) != '\\')
      *c++ = '\\';
    *c = 0;

    Beaucoup plus efficace que des appels à strlen + strcat

  • signaler à un administrateur
    Commentaire de BruNews le 11/08/2006 10:42:24 administrateur CS

    ah oui il y a aussi le memset 0 suivi du strcat que j'ai oublié de relever, c'est du amuse cpu.

    Se méfier de l'utilisation de sizeof, si le pointeur est reçu en param de fonction, sizeof = taille pointeur et rien d'autre. Il vaut mieux se faire un jeu de constantes en rapport à ce qu'on déclare en buffer.

  • signaler à un administrateur
    Commentaire de vecchio56 le 11/08/2006 10:42:34 administrateur CS

    Ton *c = 0 peut être mis dans le if, non?

    GetCurrentDirectory:
    Therefore, the size returned by the function may be two characters less than the size of the specified string, not including the terminating null character

    Je sais pas si ca vous est déja arrivé, mais dans ce cas ca marcherait pas

  • signaler à un administrateur
    Commentaire de Joky le 11/08/2006 10:45:35

    Ah et il donne la chaine en entier quand il a envie seulement ??? :)
    Comment ça se fait qu'elle fait ça cette fonction ?

    Et donc oui le *c=0 dans le if... :)

  • signaler à un administrateur
    Commentaire de yoyo269 le 11/08/2006 11:25:39

    Houla déjà tout ça comme remarques ! lol
    En plus par la crème de cppfrance.
    J'avais déjà lu quelque part que strcpy() n'était pas des plus fiables. Et en plus, je viens de lire que strcat() serait de la même trempe.
    Je profite de cette occasion pour vous demandez si tout ceci est vrai ? Si oui, comment avoir une méthode fiable pour les remplacer ?(les pointeurs ?)
    Merci Joky pour ton petit bout de code utilisant les pointeurs. Je m'y mets petit à petit, mais je suis encore un peu (voire beaucoup) "handicapé du pointeur" comme dirait BruNews.

    Je vais essayer de corriger tout ça au plus vite.

    Merci beaucoup pour votre aide.

    YOYO, @+.

  • signaler à un administrateur
    Commentaire de vecchio56 le 11/08/2006 11:37:06 administrateur CS

    Ben strcpy est très fiable, puisqu'elle fait ce qu'on lui demande. Evidemment faut toujours savoir combien de place il te reste au minimum dans ton buffer. Moi je continue à l'utiliser sans état d'âme

  • signaler à un administrateur
    Commentaire de yoyo269 le 11/08/2006 11:44:33

    Ok, donc si j'ai bien compris, du moment que l'on assez de mémoire allouée pour faire un strcpy, on a aucun souci?

    YOYO, @+.

  • signaler à un administrateur
    Commentaire de BruNews le 11/08/2006 11:46:34 administrateur CS

    strncpy (ou variante perso) est quasi obligatoire quand tu reçois un param externe ou autres cas de ce genre. Si ton prog ne prend que des chaines dont la longueur est déjà controlée par le biais de la limitation dans un EDIT, ça n'a plus aucun intérêt.

  • signaler à un administrateur
    Commentaire de steve_clamage le 11/08/2006 18:47:56

    Pourquoi il faut se mefier de sizeof ? Il fait des coup bas ?! sizeof retourne la taille d'un pointeur quand on lui passe un pointeur et quand on lui passe un tableau il retourne la taille d'un tableau, je vois rien d'anormal ?

  • signaler à un administrateur
    Commentaire de BruNews le 11/08/2006 19:24:17 administrateur CS

    void func(char *buf, char *psrc)
    {
      strcpy(buf, psrc, sizeof(buf));
    }

    int taille(int *tab)
    {
      return sizeof(tab);
    }

    4 à tout coup sur system 32 bits.
    Si tableau n'est pas dans la portée du sizeof, on obtient la taille du pointeur selon le systeme mais assurément pas la taille du tableau.

  • signaler à un administrateur
    Commentaire de steve_clamage le 11/08/2006 19:36:22

    Oui mais la tab et buf sont des pointeurs, pas des tableaux.
    C'est exactement la meme chose si je fais

    int tab[10];
    int * p = tab;

    sizeof tab == 10 * sizeof(int)
    et
    sizeof p == sizeof(void *)

    Dans une fonction on ne peut que recevoir un pointeur contenant l'adresse du tableau, puisqu'il est impossible de passer un tableau à une fonction. Ce n'est pas la faute à sizeof, il faut juste avoir saisie la différence entre un tableau et un pointeur et comment on procède pour passer un tableau à une fonction.

  • signaler à un administrateur
    Commentaire de BruNews le 11/08/2006 19:41:19 administrateur CS

    ben oui il faut avoir saisi et bien pour cela qu'il ne faut pas hésiter à répéter ce genre de chose, on voit si souvent l'erreur sur cppfrance.

  • signaler à un administrateur
    Commentaire de steve_clamage le 11/08/2006 19:51:43

    A quand une faq cppfrance ? Ca pourrait alleger le forum vu le nombre de questions récurrentes ?

  • signaler à un administrateur
    Commentaire de yoyo269 le 13/08/2006 12:18:51

    Juste une petite remarque par rapport au premier message de vecchio56.
    Le débordement est empêché d'une manière détournée, c'est-à-dire que la chaîne de caractères qui peut être copiée PIcone.szTip fait au maximum 63 de long (0 de fin exclus). Et comme szTip peut contenir au max 64 caractères, c'est nickel.
    Cela n'empêche pas que BruNews a raison sur le fait que la version n de strcpy est dans ce cas inutile.

    YOYO, @+.

  • signaler à un administrateur
    Commentaire de vecchio56 le 13/08/2006 12:39:25 administrateur CS

    Oui et ce n'est jamais utile de l'utiliser comme ca car
    strncpy(PIcone.szTip, Tip, strlen(Tip));
    est équivalent (sémantiquement, pas en terme de vitesse) à
    strcpy(PIcone.szTip, Tip);

    Pour éviter un débordement, il faut faire quelque chose du genre
    strncpy(PIcone.szTip, Tip, MAX_SIZE);
    ou MAX_SIZE est la taille disponible dans le buffer PIcone.szTip. Ca ne dépend pas de la longueur de Tip

  • signaler à un administrateur
    Commentaire de yoyo269 le 13/08/2006 13:02:32

    Ok ! Donc je pense avoir tout bien compris sur ce que vous m'avez dit et je dois dire que ça m'a été très utile.
    J'espère que ça sera de même pour beaucoup d'autres.

    En tous cas merci à tous pour vos explications et éclaircissements.
    P.S: je m'attaque à la mise à jour de YoyoMD5.

    YOYO, @+.

  • signaler à un administrateur
    Commentaire de vecchio56 le 19/08/2006 20:41:39 administrateur CS

    Je reviens vite fait au problème de départ (strncpy(PIcone.szTip, Tip, strlen(Tip));)
    Non seulement c'est plus lent (un strlen inutile), mais en plus c'est faux, car le 0 terminal n'est pas copié
    C'était juste pour préciser, je viens de m'en rendre compte

  • signaler à un administrateur
    Commentaire de Matt67 le 29/12/2006 21:25:23

    Bonsoir,

    Je viens de tomber sur ton code et j'étais très intéressé donc hop, je download ton projet et je l'ouvre et que vois-je, moult lignes de codes pour gérer l'interface graphique (fenêtre, bouton, etc...) et un algo récupéré sur le net. A part pour apprendre à faire une interface graphique en Win32, je ne vois pas trop l'interet de ton code...
    Je préfère à la limite le code http://www.cppfrance.com/codes/MD5_10868.aspx qui, au moins, n'écrit 350 000 lignes de code pour gérer l'interface, il va droit au but.

    Matt...

  • signaler à un administrateur
    Commentaire de yoyo269 le 29/12/2006 21:34:52

    Bonjour Matt67,

    pourtant il me semblait que le titre de la source était suffisamment clair.
    Ca calcule la clé MD5 et ça l'affiche, tout simplement.
    Après si la programmation en API vous dérange un peu à cause du nombre de ligne, j'en suis désolé, mais je n'y peux pas grand chose. Même si bien sûr, il y forcément moyen de réduire la taille de mon code, j'en suis convaincu.

    YOYO, @+.

  • signaler à un administrateur
    Commentaire de Matt67 le 29/12/2006 22:07:04

    Bonsoir,

    [../..] Ca calcule la clé MD5 et ça l'affiche, tout simplement. [../..]

    Je pense qu'on peut faire plus simple :-), pas au point de vu de l'algo mais sur la façon de l'utiliser.

    Matt...

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS