Aide pour passage fichier dans hash MD5

Aide pour passage fichier dans hash MD5 - C#/.NET managed - Programmation

Marsh Posté le 22-10-2010 à 14:43:07    

Bonjour,
 
Je suis débutant en C#. Je dois réaliser le hash md5 d'un fichier mais je ne sais pas trop comment faire.
 
Au début je voulais passer le fichier en argument de ma fonction md5 mais visiblement ce n'est pas possible. On m'a donc orienté vers l'ouverture du fichier dans la fonction md5.
 
J'arrive à ouvrir un fichier, j'ai ma fonction md5 mais je ne sais pas faire ce que je viens de vous expliquer juste au dessus.
 
Est ce que vous pouvez m'aider? :(  
 
Merci beaucoup

Reply

Marsh Posté le 22-10-2010 à 14:43:07   

Reply

Marsh Posté le 22-10-2010 à 20:34:26    

Est ce que tu as compris ce que tu devais retourner? Ca sera sous quelle forme?  
C'est à mon avis plus du coté de la compréhension de la problématique que tu devrais creuser..  
Niveau programmation rien de trés difficile ( ouverture - hash - fermeture - traitement bitàbit - on retourne le hashé)

Message cité 1 fois
Message édité par Taliesim le 22-10-2010 à 20:43:28
Reply

Marsh Posté le 22-10-2010 à 21:00:02    

Taliesim a écrit :

Est ce que tu as compris ce que tu devais retourner? Ca sera sous quelle forme?  
C'est à mon avis plus du coté de la compréhension de la problématique que tu devrais creuser..  
Niveau programmation rien de trés difficile ( ouverture - hash - fermeture - traitement bitàbit - on retourne le hashé)


 
Justement c'est la qu'est le problème. Est ce que tu pourrais m'expliquer un peu ou c'est trop compliqué?
Normalement la fonction md5 retourne un chiffre en hexadecimal c'est ça?
 
Merci pour ton aide

Reply

Marsh Posté le 22-10-2010 à 21:13:57    

moiguigui60 a écrit :


 
Justement c'est la qu'est le problème. Est ce que tu pourrais m'expliquer un peu ou c'est trop compliqué?
Normalement la fonction md5 retourne un chiffre en hexadecimal c'est ça?
 
Merci pour ton aide


Oui c'est ça  :)  
Donc tu ouvres le fichier ( du genre FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read, 8192);
) ,tu fais ton hash ensuite sur celui ci ( du genre md5.ComputeHash(stream); ) ,tu refermes ton fichier ( stream.Close();
).  
Tu dois appliquer sur le hash un traitement pour le retourner, essaye de trouver comment le construire ( indice surement une boucle)
 
edit : je te mets une solution proposée online  http://sharpertutorials.com/calcul [...] ksum-file/ , essaye de te creuser la tete un peu avant :o .

Message cité 1 fois
Message édité par Taliesim le 22-10-2010 à 21:47:37
Reply

Marsh Posté le 23-10-2010 à 10:05:44    

Merci beaucoup de ton aide, c'est cool de m'aider comme ça. Je vais essayer ce que tu m'expliques.

Reply

Marsh Posté le 23-10-2010 à 15:17:31    

Bonjour,
 
Alors j'ai essayé ce que tu m'a expliqué mais pour le moment je coince sur l'ouverture, je m'explique:  
En fait je bloque toujours sur l'utilisation du md5,
Dans le programme il y a la methode?(fonction?) pour le md5 et il y a le "main". L'ouverture du fichier je la mets dans le "main", ensuite j'appelle la fonction "md5" dans laquelle j'envoie le fichier qu'on vient d'ouvrir puis je referme le fichier c'est ca?
 
 
J'ai trouvé cette fonction pour effectuer le md5, il y a une différence par rapport à celle que tu vient de me donner hormis que le code est différent?
 
public string MD5HashFile(string FileName)
            {
                byte[] result;
                string HashString;
 
 
                System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
                System.IO.Stream stream = System.IO.File.OpenRead(FileName);
 
                result = md5.ComputeHash(stream);
                stream.Close();
                System.Text.StringBuilder output = new System.Text.StringBuilder(2 + (result.Length * 2));
 
                foreach (byte b in result)
                {
                output.Append(b.ToString("x2" ));
                }
                HashString = output.ToString().ToUpper();
 
                return HashString;
                }

Reply

Marsh Posté le 23-10-2010 à 16:18:35    

Taliesim a écrit :


Oui c'est ça  :)
Donc tu ouvres le fichier ( du genre FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read, 8192);
) ,tu fais ton hash ensuite sur celui ci ( du genre md5.ComputeHash(stream); ) ,tu refermes ton fichier ( stream.Close();
).
Tu dois appliquer sur le hash un traitement pour le retourner, essaye de trouver comment le construire ( indice surement une boucle)

 

edit : je te mets une solution proposée online  http://sharpertutorials.com/calcul [...] ksum-file/ , essaye de te creuser la tete un peu avant :o .

 


J'ai réalisé le code suivant mais dans  le try le "md5" me marque une erreur: le nom 'md5' n'existe pas dans le contexte actuel.

 


using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Security.Cryptography;

 

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {

 

          FileStream stream = new FileStream("D:\\final.c", FileMode.Open, FileAccess.Read, FileShare.Read);

 

           
            try
            {
               md5.ComputeHash(stream);
            }

 

           finally
            {
                stream.Close();
            }

 

       }

 

       protected string GetMD5HashFromFile(string fileName)
        {
            FileStream file = new FileStream(fileName, FileMode.Open);
            MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] retVal = md5.ComputeHash(file);
            file.Close();

 

           StringBuilder sb = new StringBuilder();
            for (int i = 0; i < retVal.Length; i++)
            {
                sb.Append(retVal[i].ToString("x2" ));
            }
            return sb.ToString();
        }
       
           
        }
}

 


Qu'est ce que je peux faire?

 

Merci


Message édité par moiguigui60 le 23-10-2010 à 16:18:58
Reply

Marsh Posté le 25-10-2010 à 13:57:00    

Ouch, en lisant ton code, je pense que tu devrais déjà commencer par les bases de la programmation: Appel de fonctions, instanciation d'objet...
 
Ce que tu écris la laisse penser que tu ne maitrise pas du tout les bases.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed