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

Algorithmes et structures de données Discussion :

CRC et unicité de fichier


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Intégrateur
    Inscrit en
    Novembre 2004
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2004
    Messages : 139
    Par défaut CRC et unicité de fichier
    Bonjour,

    Ma problématique est la suivante : ma future architecture logicielle doit collecter plusieurs milliers de fichiers par jour au fil de l'eau.
    Je désire mettre en place une solution qui permettre de s'assurer qu'un fichier est collecté pour la 1ère fois (à la connaissance d'un historique de 7J).
    Dans le cas d'une collecte répétée sur un fichier, mes contraintes sont les suivantes :
    1. La conservation du nom du fichier n'est pas garantie
    2. La structure du contenu n'est ni déterminée ni constante
    3. Le contenu est évidemment identique !
    J'ai pensé à exploiter le CRC (Contrôle de redondance cyclique) comme clé d'unicité. Ce CRC peut être obtenu sous UNIX ou LINUX par la commande suivante :

    Je me suis documenté sur la sujet pour répondre à la question suivante : Est-ce que la probabilité d'obtenir un CRC identique sur deux fichiers différents est nulle ? Dans la cas contraire, est-elle infinitésimale ?

    Je n'ai pas trouvé de réponse précise. Avez-vous un avis ?

    Merci de vos réponses

    Christophe

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    bien le bonjour,

    un CRC est plus petit (en nombre de bits utilisés) que le fichier qu'il représente. Sauf dans le cas des fichiers d'à peine quelques octets. Le CRC est donc une application surjective de l'ensemble des fichiers dans l'ensemble des fichiers de 32 bits. (bien qu'on puisse aussi calculer un CRC plus grand).

    Donc, cet argument seul permet de dire que plusieurs fichiers peuvent avoir le même CRC. Mais la probabilité est très faible.

    Ce que tu cherches à obtenir est une empreinte d'un fichier, un hash. Le CRC est un moyen. Tu peux aussi prendre un hash md5 ou sha1.
    Un hash md5 ou sha1 se fait sur plus de bits qu'un simple CRC, c'est donc logiquement encore plus unique.


  3. #3
    Membre confirmé
    Homme Profil pro
    Intégrateur
    Inscrit en
    Novembre 2004
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2004
    Messages : 139
    Par défaut
    Citation Envoyé par khayyam90
    un CRC est plus petit (en nombre de bits utilisés) que le fichier qu'il représente. .../... Le CRC est donc une application surjective de l'ensemble des fichiers dans l'ensemble des fichiers de 32 bits.
    Je te remercie pour cette remarque. Elle a le mérite de me faire garder les pieds sur terre : le fichier lui-même est la seule clé d'unicité absolue... (ou un CRC de sa taille !!)

    Citation Envoyé par khayyam90
    Donc, cet argument seul permet de dire que plusieurs fichiers peuvent avoir le même CRC. Mais la probabilité est très faible.
    As-tu une idée de cette probabilité ?

  4. #4
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    Citation Envoyé par cquilgars
    As-tu une idée de cette probabilité ?
    mmm ... je dirais 2^32 / 2^taille du fichier en bits

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    La probabilité que plusieurs fichiers (2^32) aient le même CRC est de 1.
    La probabilité que 2 fichiers aient le même CRC sous l'hypothèse que les code CRC sont répartis équitablement est de 1/2^32, à mon avis.

  6. #6
    Membre confirmé
    Homme Profil pro
    Intégrateur
    Inscrit en
    Novembre 2004
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2004
    Messages : 139
    Par défaut
    Citation Envoyé par khayyam90
    mmm ... je dirais 2^32 / 2^taille du fichier en bits
    Citation Envoyé par Miles
    La probabilité que plusieurs fichiers aient le même CRC si les fichiers ont une taille supérieure à 32bits est de 1.
    Actuellement, j'ai logge le CRC (obtenu par cksum) sur 30000 fichiers. Ils sont tous uniques. Les fichiers ont une taille moyenne de 2Mo (avec des pointes à 40Mo).

    je ne suis pas sûr de vos propositions (auquel je n'étais pas foutu d'arriver !)
    Dois-je jouer au loto ce soir ?!

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

Discussions similaires

  1. Comparaison fichier avec crc
    Par mercure07 dans le forum C#
    Réponses: 1
    Dernier message: 10/03/2008, 10h13
  2. Réponses: 2
    Dernier message: 02/10/2007, 19h25
  3. recuperer (ou calculer le CRC d'un fichier)
    Par johannlb dans le forum VB.NET
    Réponses: 6
    Dernier message: 02/08/2007, 17h15
  4. Réponses: 6
    Dernier message: 12/12/2006, 13h30
  5. Unicité de nom de clés dans un fichier .INI
    Par The_Warlord dans le forum Langage
    Réponses: 8
    Dernier message: 11/11/2004, 12h16

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