2Fermer4
GoldenCrystalLe 18/11/2009 à 11:29
Oui, explique plutôt quelle est ta réelle intention derrière cette "réutilisation de bit" smile
Sinon l'idée du XOR est pas bête. Enfin, je l'utiliserais d'une autre manière que proposée par Zerosquare.
Par exemple, tu définis deux valeurs. Au pif FALSE=0xAAAAAAAA et TRUE=0x55555555. Selon la valeur de ton "flag en plus", tu stockes CRC32 ^ TRUE ou CRC32 ^ FALSE.
Ensuite pour la vérification et récupération du flag, tu calcules CRC32_REEL. Tu compares CRC32 (le champ stocké) à CRC32_REEL ^ TRUE et à CRC32_REEL ^ FALSE, si ça correspond tu sais à la fois que ton CRC32 est valide et la valeur de ton flag.

En fait tu retires juste deux cas de détection d'erreur en faisant ça, mais c'est inévitable. En gros pour un CRC32 donné il y aura deux valeurs de champ valides, et c'est pour ça qu'on prend des masques de bits bien répartis pour les flags, ça réduit beaucoup les erreurs dues à la corruption. Si quelqu'un peut modifier ton champ CRC32 les risques de sécurité ne sont pas plus élevés que sans le "hack" des flags XOR. Mais pour la valeur CRC32 XOR Flag stockée, tu pourras également valider deux valeurs de CRC32 calculé. Ça pourrait être utilisé de manière malveillante, comme ça pourrait te conduire à accepter des données corrompues, mais là c'est un risque à prendre.

(PS: Je propose d'appeler ça le CRC32 - 1 cheeky )