Simples somme de données 8, 16, 32, 64 bits

Soyez le premier à donner votre avis sur cette source.

Vue 5 579 fois - Téléchargée 736 fois

Description

Exemple de simple somme 8,16,32,64 bits sur des données.


FileTest.txt.bin [1234567890-ABCD-abcd-(^_^)]
0x94
0x2E69
0x9E9D666F
0xC4D9A1A4D9C3C4CB

attention :

sur le fonctions de sommes sur Stream, ne sont pas adaptées en performances pour des fichiers supérieur a 65MB.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5 -
Intéressant ... mais peut-on utiliser ces checksums pour comparer de nombreuses données, où sont-ils seulement efficaces pour vérifier si tel fichier a été corrompu lors d'un traitement sur le disque ? Je veux dire sont-ils assez sûrs comme le CRC-32 ?

Cordialement, Bacterius !
f0xi
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26 -
n'importe qu'elle somme est "fiable" pour verifier si un fichier a été modifié ou corrompu.
ensuite, vus la "complexité" du bouzin, les collisions (somme identique pour fichier different) sont plus frequentes qu'avec md5 ou SHA.
Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5 -
Donc si j'ai bien compris, tu fais simplement une addition des octets/mots/doubles mots/int64 du message modulo la taille du checksum ?

Cordialement, Bacterius !
f0xi
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26 -
c'est tout simplement ça,

pour une somme 8bits, on lit octet par octet qu'on additionne les uns aux autres.
pour une somme 16bits, on lit deux octet par deux octet
pour une somme 32bits, on lit 4 par 4,
pour une somme 64bits, 8 par 8, 128, 16 par 16, 256, 32 par 32, 512, 64 par 64 etc.

graçe a Delphi, pas besoin de faire le modulo puisqu'il reviens a zero tout seul :
byte(255 + 1) (255+1) mod 256 0byte(255 + 2) (255+2) mod 256 1word(65535 + 4) (65535 + 4) mod 256 3

etc ...
Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5 -
En gros, si j'utilise le checksum 8 bits, et que j'ai un message de deux octets, on a :

($05;$05) ($02;$08) ($0A;$00) = ($03;$07) = ... ?

Alors oui effectivement il ne peut être utilisé que dans le cadre d'une vérification d'intégrité de fichier, et pas autrement (trop de collisions).

Cordialement, Bacterius !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.