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

Langage PHP Discussion :

[Système] crc32 - pour un fichier


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Par défaut [Système] crc32 - pour un fichier
    Bonjours,

    Je reprend la définition du manuel PHP :

    "crc32 — Calcule la somme de contrôle CRC32
    Description
    int crc32 ( string $str )

    crc32() génère la somme de contrôle cyclique CRC32, calculée sur 32 bits, et appliquée à la chaîne str . Cette fonction est généralement utilisée pour valider l'intégrité de données durant une transmission.

    Comme le type d'entier de PHP est signé, et que de nombreuses sommes de contrôle CRC32 aboutissent à un nombre négatif, vous devez utiliser le format "%u" de la fonction sprintf() ou printf() pour obtenir la représentation littérale de la somme de contrôle CRC32. "


    Depuis quelques temps , je cherche à afficher la somme de contrôle crc32 de fichiers et pas de leur contenu.
    J'ai un fichier que j'ouvre par exemple sous Winrar ou autre logiciel comme l'explorateur windows et j'ajoute l'affichage d'infos crc32. Ce fichier à pour somme crc32 D64564A23 par exemple, Ce même fichier avec la fonction crc32 à pour somme un chiffre négatif qui est totalement différent même converti en hexadécimal avec la fonction php dechex.

    J'ai essayé toutes les propositions incluses sur la page http://fr2.php.net/crc32 mais aucun résultats concordant avec ma somme crc32 sous windows explorer ou winrar.

    Comme suggérer sur la page http://fr2.php.net/crc32 , une nouvelle fonction comme crc32_file serait la bienvenu mais n'existe pas pour le moment (un peu comme la fonction php md5 et md5_file qui existe) .

    Avez vous une solution pour ce problème ? Pour afficher la même somme crc32 en php que celle obtenu sous windows.

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    Si on regarde la bas :
    http://en.wikipedia.org/wiki/Cyclic_redundancy_check

    on voit que ton problème n'est pas soluble facilement.

    En effet, en résumé :
    * Il existe plusieurs CRC32 (polynomes différents)
    * Parfois une chaine arbitraire est ajoutée pour augmenter l'efficacité du CRC
    * Le résultat est parfois représenté de manière inversée

    Pour réussir a faire ce que tu souhaites, il faudrait donc connaitre exactement quel type de CRC est utilisé pour calculer ton CRC visible sous windows, et a mon avis ca dépend de si c'est compressé avec windows, winrar, winzip, tar.gz, ou autre... voir meme de la version du logiciel utilisé... et ensuite réimplementer l'algo du CRC en utilisant le meme algo pour avoir le meme.

    En clair... impossible...

    Seules solutions viables :
    * générer le CRC en PHP lors de la compression (par PHP donc)
    * lire le CRC du fichier compressé (qui doit bien etre stocké quelque part dans l'archive) en PHP

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Par défaut
    J'ai trouvé une solution,
    j'ai récuperer les sources du logiciel cksfv http://zakalwe.fi/~shd/foss/cksfv/ et modifier les sources pour n'avoir d'afficher que le crc32. je l'ai compiler puis je l'ai placer sur le serveur et mon code :

    $crc32=exec("cksfv $monfichier");

    et c'est terminer, la fonction exec pour lancer une commande d'un logiciel sur le serveur et voilà, le tour est jouer. c'est pas du php pur et dur mais ça fonctionne.

    Ta proposition Fladnag est excellente mais j'avais pas le choix, je dois laissé les fichiers décompressé sur le serveur et si je devait compresser puis récupérer l'info du crc32 et encore le décompressé, ça aurait été difficile a supporter pour le serveur, car il y aurait dans les 30 giga de fichiers à traité.

    Bye

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/08/2007, 09h38
  2. Réponses: 1
    Dernier message: 17/05/2005, 20h50
  3. [C#] Chemin pour mon fichier CSS
    Par the_new dans le forum ASP.NET
    Réponses: 5
    Dernier message: 23/03/2005, 15h25
  4. [BAT] commande AT pour exécuter fichier .bat
    Par PatLogan dans le forum Scripts/Batch
    Réponses: 10
    Dernier message: 04/01/2005, 16h51
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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