IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

hash d'un disque dur


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte matériel

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 33
    Points
    33
    Par défaut hash d'un disque dur
    Bonjour,
    Il y'a quelques logiciel qui permettent de faire un hash d'un disque dur soit en intégralité ou logique (donc seulement l'espace utilisé) donc je me demande comment ces logiciels marche puisque géralement la RAM sur un ordinateur courant ne dépasse pas 8Go et un disque dur peut faire quelques tera-octets...

    Peut-être qu'il utilise une manière de hasher spécial, je ne sais pas ...

    Merci pour vos précisions

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 188
    Points : 17 139
    Points
    17 139
    Par défaut
    le calcul d'un hash est une opération faite par blocs (par exemple de 256 octets).
    La taille est en général celle du résultat.

    Par exemple (très basique mais très mauvais comme hash), ca peut-être le XOR bit à bit des blocs successifs.
    Pour cela, il n'est pas utile de monter le fichier entier en mémoire, mais seulement un morceau (en général, une page de ram, tant qu'à faire)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte matériel

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 33
    Points
    33
    Par défaut
    Oui j'avais pensé a des algorithmes probables mais donc y a t-il des normes dans les logiciel qui permettent de faire des hash de disque dur ou chaqu'un fait à sa sauce ?
    pour les serveurs d'hébergement de fichier ça peut aussi être problèmatique de faire des hash de gros fichier comme ceci j'ai du mal a voir comment tout cela peut marcher

    merci en tous cas pour ton début de réponse

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 617
    Points
    23 617
    Par défaut
    Bonjour,

    Citation Envoyé par Miss TAKE Voir le message
    Oui j'avais pensé a des algorithmes probables mais donc y a t-il des normes dans les logiciel qui permettent de faire des hash de disque dur ou chaqu'un fait à sa sauce ?
    C'est-à-dire qu'en réalité, un fichier sur un disque dur tel que nous les connaissons est une suite consécutive d'octets. La mémoire vive l'est aussi.

    Donc, si tu écris un algorithme, quel qu'il soit, conçu pour accéder à telle ou telle partie de la mémoire pour lire les données dont il a besoin, alors tu peux très bien lui demander de faire la même chose dans un fichier. Plus précisément, tu déclares un buffer d'une taille raisonnable dans ton programme et chaque fois que tu as besoin de lire une position p en mémoire, alors tu appelles une fonction qui va lire la position p dans ton fichier et aller copier ce qui s'y trouve dans ton buffer (qui lui est à emplacement fixe). Autrement dit : tu demandes à ton programme d'assurer à la fois la tâche principale et la logistique nécessaire pour la mener à bien.

    Aujourd'hui, avec l'élargissement du plan mémoire à 32 puis 64 bits et en bénéficiant de la mémoire virtuelle et paginée, tu peux aujourd'hui demander à « mapper » un fichier en mémoire, c'est-à-dire demander au système de faire croire qu'il est bien chargé alors qu'il ne l'est pas réellement. Un accès arbitraire dans une zone censée être réservée à ton fichier va déclencher une page fault qui sera rattrapée silencieusement par le système d'exploitation, qui lui-même se chargera d'une part de lire un bloc de ton fichier dans une page physique disponible en mémoire et de faire correspondre cette page physique à l'adresse que tu es en train de lire. Moralité : tout le traitement devient transparent à ton programme.

    pour les serveurs d'hébergement de fichier ça peut aussi être problèmatique de faire des hash de gros fichier comme ceci j'ai du mal a voir comment tout cela peut marcher
    merci en tous cas pour ton début de réponse
    En réalité, à partir du moment où tu travailles par blocs successifs, tu n'as jamais besoin d'allouer plus d'un bloc à la fois, même si ton fichier occupe des dizaines de tera-octets. L'exemple le plus simple est celui de la division sur papier : admettons que je veuille diviser 956719541377843387734946338 par 5.

     956719541377843387734946338 | 5
    -----------------------------+------
     4                           | 191…
     45                          |
      06                         |
       1…                        |
    
    Je ne vais pas diviser ce grand nombre en une seule fois, mais travailler au niveau du chiffre (ou plus précisément d'un nombre de chiffres égal à celui du diviseur + 1, au plus) : je récupère le 9, j'y soustrais 5 autant de fois que je peux, j'écris ce nombre dans le panneau de droite, puis je lis le chiffre suivant, je le concatène à mon reste, je soustrais à nouveau 5 autant de fois que je peux à ce nouveau nombre, je concatène mon résultat au précédent, et je continue ainsi jusqu'à avoir épuisé tous les chiffres du dividende, un par un.

    On voit bien que dans ce cas précis, quelque soit la longueur de mon nombre, je n'ai jamais besoin de plus de deux ou trois chiffres en entrée à la fois. Mieux encore : le traitement est linéaire. Je n'ai pas besoin de me souvenir des chiffres que j'ai déjà traités pour la suite du processus, ni d'y revenir ultérieurement. Ceci me permet de travailler avec des fichiers à accès séquentiels comme sur certaines bandes, ainsi que de faire des traitements à la volée sur des données reçues par le réseau, par exemple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/08/2007, 18h31
  2. Numéro de série du disque dur
    Par h_kamel dans le forum Assembleur
    Réponses: 8
    Dernier message: 21/05/2007, 11h28
  3. Récupèrer la liste des disques durs
    Par Tililian dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/06/2003, 12h42
  4. Monter un disque dur USB
    Par Iced Earth dans le forum Matériel
    Réponses: 5
    Dernier message: 13/01/2003, 22h02
  5. Accès direct au disque dur
    Par Berdo dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 12/01/2003, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo