Checksum 32 bit [Résolu]

Signaler
Messages postés
39
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
20 août 2009
-
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
-
slt,
j'ai trop chercher mais j'ai pas trouvé auccune choses sur le "Checksum 32 bit" et pas "CRC32" pouvez-vous m'aider???
Je cherche une fonction pour faire cette calcule, je peux la faire avec Hexworkshop
>> selectioner les données puis "Tools" puis "Generate checksum" puis le 3 eme choix "Checksum 32 bit"
mais comment faire ça sous Delphi??
merci

24 réponses

Messages postés
39
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
20 août 2009

[../auteur/JLEN100/304728.aspx jlen100]

merci mais j'ai pas demander le CRC32
J'ai demander le

Checksum 32 bit
-------------
Smith
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Checksum 32 bit est un "ensemble". CRC32 appartient à l'ensemble des "Checksums 32 bits". Voilà ...

Cordialement, Bacterius !
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
Checksum Generation:



<li>Checksum either entire document or a selection</li>
<li>8-bit, 16-bit, 32-bit, and 64-bit checksums (sum)</li>
<li>CRC-16</li>
<li>CRC-16/CCITT</li>
<li>
CRC-32
</li>
<li>Custom CRC-16</li>
<li>
Custom CRC-32
</li>
<li>MD2, MD4, MD5</li>
<li>SHA1, SHA-224, SHA-256, SHA-384, SHA-512</li>
<li>RIPEMD-128, RIPEMD-160, RIPEMD-256, RIPEMD-320</li>
<li>Tiger</li>
<li>Whirlpool</li>
<li>View checksums and CRCs as 1s or 2s Complement</li>





<hr width="100%" size="2" />
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
On a aussi des checksums sur 128, 256, 512 et même 1024 octets (même si les deux derniers soulèvent des questions légitimes de stockage : le hash du mot de passe est plus long que le mot de passe lol).

Cordialement, Bacterius !
Messages postés
39
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
20 août 2009

Bacterius, merci
mais comment peux-je le calculer c ça la question???
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Un checksum est basé sur un algorithme déterministe bien défini. Pour le CRC32, f0xi a réécrit l'algorithme pour le calculer en Delphi. Il te suffit d'aller voir la source citée par jlen100 ...

Cordialement, Bacterius !
Messages postés
39
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
20 août 2009

[../auteur/BACTERIUS/1247343.aspx Bacterius]

oui mais c pas le même algo que je cherche
regarde cette image..
http://www6.0zz0.com/2009/07/12/13/810464156.png

c par le hex que j'ai fait le calcule...
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Dans ce cas tu te renseignes sur l'algorithme que tu veux utiliser. Il en existe plein :

Non cryptographiques :

CRC16
CRC32
Custom CRC
...

Cryptographiques :

MD2 (obsolète)
MD4 (obsolète)
MD5 (limite obsolète)
SHA-1
SHA-2
RIPEMD-128, RIPEMD-160, RIPEMD-256, RIPEMD-320
Tiger
Whirlpool
...
______________________________________________

Tu peux même créer ton propre algorithme non cryptographique si tu y tiens, la plupart des algos fait maison suffisent pour faire un checksum non cryptographique.

Cordialement, Bacterius !
Messages postés
8
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
10 août 2009

Je viens de faire une réponse identique à un autre message ( désolé pour la redifussion )

Comme son nom l'indique le Checksum32 est une valeur résultante sur 32 bits permettant de vérifier l'intégrité d'un ensemble de valeur.
Toutefois cette vérification est très simpliste et n'apporte qu'un niveau d'intégrité très limitée.
Pour s'en persuader, il suffit d'utiliser un nombre restreint de donnée ce qui permet de vérifier la valeur très aisément.

Exemple soit les caractères 1 2 3 4 5 ( ne pas mettre d'espace car cela reviendrai à ajouter d'autre valeurs ), le Checksum32 fourni pas un éditeurHexadécimal sera $000000A5, ( le checksum 32 est donc une simple addition modulo 2^32 de l'ensemble des données )( ceci a été vérifier avec plusieurs éditeurHéxadécimal mais pas avec celui faisant l'objet du message car je ne l'avais pas sous la main ! ), les mêmes valeurs dans un ordre différent donneront exactement le même résultat, et les caractères 1 2 1 2 9 ( toujours sans espece ) donneront également le même résultat.

Ceci semble contredire la définition sur Wikipédia qui indique le checksum32 comme un CRC,
car un CRC est un algorithme polynomial ( formule de calcul basé sur un polynome )
et le checksum n'a pas de polynome.

De plus, un CRC ne donne pas le même résultat pour un ensemble de valeur identique mais dans un ordre différent
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Hophop on va corriger et approfondir tout ça ...

le Checksum32 est une valeur résultante sur 32 bits permettant de vérifier l'intégrité d'un ensemble de valeur.


C'est quoi pour toi un "ensemble de valeurs" ? Pour moi ça représente un ensemble de définition (R, Z, les nombres premiers, ...). Le terme "donnée" serait plus approprié.

Toutefois cette vérification est très simpliste et n'apporte qu'un niveau d'intégrité très limitée.


Effectivement, selon le paradoxe des anniversaires, il suffit de 65536 calculs (que dalle, quoi) pour avoir 50% de chances de trouver une collision (deux données qui donnent la même valeur).

le checksum 32 est donc une simple addition modulo 2^32 de l'ensemble des données


Hou la la stop stop !! Non non et non ! Si c'était le cas, alors les données ($12, $21) et ($21, £12) auraient le même checksum. Et là autant dire que ça ne sert à rien. Les propriétés mathématiques des checksums ont beau être simples, c'est quand même plus évolué que ça ! Sauf si l'on utilise un checksum "rudimentaire".

Ceci semble contredire la définition sur Wikipédia qui indique le checksum32 comme un CRC


Ouf ça pique. Un checksum est une "somme de contrôle", qui sert à représenter des données de façon très réduite, afin d'en faciliter la comparaison, le stockage, etc ... Un CRC est un type de checksum, qui est conçu pour être utilisé sur des données de taille moyenne (supérieure à 1 Ko, mais pas au-delà de 2 Go).

De plus, un CRC ne donne pas le même résultat pour un ensemble de valeur identique mais dans un ordre différent


Je ne comprends absolument rien
________________________________

Je donne donc mon petit texte :

Un checksum est une somme de contrôle permettant de vérifier l'intégrité d'une donnée. Sa particularité réside dans le fait qu'il doit être difficile de trouver deux données résultant en un même checksum. Cependant, comme il doit pouvoir être rapidement calculé, sa complexité en souffre. Il utilise des propriétés mathématiques peu complexes, ce qui rend toute utilisation cryptographique d'un checksum aberrante, mais ces propriétés sont largement suffisantes pour la plupart des utilisations qu'on en fait (deux données ayant la même somme de contrôle ont très peu de chances d'être un jour confrontées). Son utilisation au niveau cryptographique, citée plus haut, est inutile, d'abord au visu de la faiblesse de ses propriétés mathématiques, mais également de son ensemble final, souvent limité à 32 bits pour un calcul plus rapide et un espace de stockage réduit. Ce qui fait que d'après le paradoxe des anniversaires, qui démontre qui pour tout ensemble restreint E d'une amplitude de X, et où chaque valeur de E est associé à une valeur aléatoire N (d'ensemble E, bien sûr), il suffit de Racine(X) calculs pour avoir une probabilité de 50% d'obtenir deux données associées à la même valeur N Dans notre cas, l'ensemble E a une amplitude de 2^32, il suffit alors de Racine(2^32) 2^16 65536 calculs. Ce qui représente moins d'un millième de seconde de travail sur un ordinateur moderne. Voilà pour son utilisation cryptographique. Nous pouvons donc conclure que le checksum est très utile dans la plupart des applications, citons par exemple WinZip (qui ne s'est jamais demandé ce que représentaient les 8 petits caractères dans la dernière colonne ?), pour vérifier rapidement si le fichier a eu un problème lors de sa décompression, mais qu'il présente néanmoins des limites importantes. Les applications modernes utilisent à présent des checksum 64, voire 128 bits, où alors basculent carrément dans les fonctions de hashage cryptographique (MD5, SHA, Whirlpool, RIPEMD, Tiger, Panama, ...), qui sont nettement plus sûres que les checksums.

Désolé pour le pavé, surtout que ce texte n'a pas vraiment de problématique (comme il n'y avait rien, j'ai opté pour "Définition du checksum").

Cordialement, Bacterius !
Messages postés
8
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
10 août 2009

Effectivement bacterius le terme donnée est plus approprié,j'ai écris le message trop rapidement!
Mais, comme je l'ai visiblement mal expliqué précédemment les données $21 et $12 donne le même checksum_32 que les données $12 et $21 ( sur l'éditeur hexadécimal que j'ai sous la main au moins c'est le cas car cela donne $33 ! )

lorsque j'utilise le terme CRC je pense à un CRC16 ou CRC32 par exemple

Le programme de f0xi donne une très bonne réponse !
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
CRC = Cyclic Redondance Check (verification de redondance cyclique)

Checksum = Somme de control


Checksum peut etre calculer simplement sur papier ou de tête ...

pour CRC c'est un peu plus moins simple.
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
pour CRC c'est un peu plus moins simple.


Essaye de faire un seul xor de tête et tu comprendras à quel point les ordinateurs sont utiles

Cordialement, Bacterius !
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Mais, comme je l'ai visiblement mal expliqué précédemment les données $21 et $12 donne le même checksum_32 que les données $12 et $21 ( sur l'éditeur hexadécimal que j'ai sous la main au moins c'est le cas car cela donne $33 !


cantador
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Ca dépend de l'algorithme. Si il s'agit d'une simple addition modulaire, alors oui, mais regarde, en CRC, MD5, SHA, Whirlpool, Panama, Tiger, LEA, MD6, SHA2, ... ça donnera bien quelque chose de différent

Cordialement, Bacterius !
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
bon ben ya tout..


cantador
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Non j'ai dû en oublier plein (CubeHash, MD2, MD4 (lol), Square, etc ...)
Et LEA ne devrait même pas être dans la liste, mais je le mets comme ça pour le fun

Cordialement, Bacterius !
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
@bacterius :

facile de faire un XOR, AND ou OR de tête :

A : 01110101 : $75
B : 10110011 : $B3

A and B = 00110001 : $31
A or B = 11110111 : $F7
A xor B = 11000110 : $C6
A shr 3 = 00001110 : $0E
A shl 4 = 01010000 : $50
B shr 2 = 00101100 : $2C
B shl 3 = 10011000 : $98
A rol 5 = 10101110 : $AE
B ror 3 = 10011101 : $9D
piv A = 10111010 : $BA
piv B = 01110011 : $73
A + B = 100101000: $128

c'est surtout le modulo qui fait sué :)

A mod B (de tête) ... heu ... $75 mod $B3 $75
B mod A (toujours) $B3 mod $75 $3D (surement)
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
facile de faire un XOR, AND ou OR de tête :


Même si les représentations binaires du nombre ne sont pas sur papier ?

Pour le mod c'est (mais tu le sais probablement mieux que moi lol) :

A mod B = A - ((A div B) * B)


Chaud à faire de tête surtout la multiplication avec B.
On a donc :

$B3 mod $75 $B3 - (($B3 div $75) * $75) ... = $3E. :)


Un petit exercice ?

(($93848A8B xor $2938383F) mod $0000F1F1) + (not $388412AC) mod $ABABABAC.




Cordialement, Bacterius !
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
Vive la merveilleuse invention qu'est la calculatrice !!


@+
Nico { www.ni69.info }