djmmix
Messages postés152Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention29 avril 2009
-
24 mai 2009 à 16:53
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
6 août 2009 à 23:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 6 août 2009 à 23:23
Vite fait, une amélioration des performances. Du côté mathématique ça ne change absolument rien, mais plutôt que de concentrer la fonction F cryptographique en une seule fonction, on la sépare en quatre fonctions E, F, G et H. Ca permet d'éviter 256 "case..of" par bloc ...
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 5 août 2009 à 18:20
Attention : la dernière modification (j'espère). Voici ce qu'elle apporte :
- un nouveau logo (lol)
- une modification des fonctions HashCrypt et HashUncrypt : elles travaillent à présent directement sur l'objet THash et non pas sur sa représentation en chaîne. C'est plus rapide et plus efficace (la clef peut être n'importe-quoi, car on calcule son hash, puis on additionne les deux hashs pour crypter et on soustrait pour décrypter). Au fait, dans la dernière version de ces fonctions, un bug s'est glissé ...
- petite erreur au niveau de l'algorithme (l'avant-avant-dernier double-mot du hash (Hash[$D]) était constant dû à une petite erreur d'inattention.
Pour ceux que ça intéresse, les caractéristiques cryptographiques de l'algorithme (certaines) :
- blocs de 512 bits
- 16 rondes par bloc
- une fonction F, qui est appellée 256 fois par bloc, qui prend en paramètre quatre entiers, ainsi qu'une valeur entre 1 et 4, et qui retourne un seul entier. Elle effectue quatre types d'opérations différentes (selon la valeur du dernier paramètre), en utilisant les quatres premiers paramètres).
- une "expansion" de chaque entier du bloc : en effet, pour chaque ronde - donc pour chaque entier 32 bits du bloc en cours, on sépare les quatre octets de cet entier, puis on associe à chaque octet une valeur sur 32 bits (voir tableau HashTable). Cela permet de créer un effet d'avalanche intéressant du point de vue mathématique.
- une recalculation des tableaux en constante (HashInit et HashTable), à partir de nombres premiers. En effet :
* le tableau HashInit est basé sur le calcul suivant : prenons un grand nombre premier ($96438AF7 pour ce tableau). Imaginons un tableau Prime, de 16 éléments (0..15), contenant les 16 premiers nombres premiers (en partant de 2 inclus). Alors on a le calcul suivant :
HashInit[0] = $96438AF7 * Primes[0];
pour I 1 à 15 faire HashInit[I] ($96438AF7 * Primes[I]) + ($96438AF7 mod Primes[I]);
* pour le tableau HashTable, c'est la même chose, sauf qu'on se base sur le nombre premier $1C8CFBFF, et que les tableaux HashTable et Prime contiennent 256 éléments.
- lors des 16 rondes de chaque bloc, les seize entiers du hash sont mélangés dans tous les sens, je ne saurais vous décrire ce qu'ils doivent endurer à chaque ronde :'( .... lol
______________________
Et voilà, je pense que c'est fini, sauf si l'on trouve des bugs ;-)
Bonne chance pour étudier ça, Djmmix, le coup de l'expansion du bloc est plus que pénible à cryptanalyser ... ;-)
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 3 août 2009 à 12:22
De rien, content que ça te plaise. Je veux être cryptologue plus tard et j'ai fait cet algorithme avec mes compétences de lycéen ( :'/ ) en ayant lu plein de cours sur la cryptologie.
Cordialement, Bacterius !
djmmix
Messages postés152Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention29 avril 2009 3 août 2009 à 12:06
salut Bacterius,
je vais étudié sa de près :)
merci pour tout tes éfforts pour cet algo :)
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 2 août 2009 à 21:29
Modification importante, changement total de l'algorithme. En effet, j'ai trop négligé l'aspect "bits" en me penchant trop sur l'aspect "octet". Bref, un effet d'avalanche totalement raté, voire des collisions à la demande. C'est normalement corrigé, et j'ai repassé tous les tests. J'espère bien que c'est fini ...
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 24 juil. 2009 à 14:32
Bon alors encore du nouveau : la table de hashage refait son apparition :D
En effet après une petite analyse, j'ai remarqué que les hashages ne changeaient pas beaucoup dans certaines conditions, donc j'ai réintroduit les tables de hashage (associées à un nouveau concept ...). Je pense qu'il s'agira de la dernière modification de l'algorithme en lui-même ...
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 19 juil. 2009 à 03:18
Enorme mise à jour (voir dernière partie de la description). En revanche, je n'ai pas mis à jour la doc. (trop de boulot, faut tout refaire quoi, puisque le concept change radicalement).
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 16 juil. 2009 à 20:33
Encore des nouveautés, à présent l'on a un Callback, qui est appelé à chaque bloc du message traité ! (Cependant pensez à ne traiter que quelques callbacks, sinon le traitement prendra un temps fou : j'opte pour ma part pour un traitement de 1 callback sur 32768).
De plus, l'algorithme a été renforcé cryptographiquement parlant : effectivement, la version précédente resistait difficilement à une attaque par préimage, d'après certains tests concluants). Pour finir, les documentations ont totalement été remises à jour, et la table de hashage (contenant les 64 valeurs) n'existe plus, devenant totalement obsolète avec cette nouvelle version.
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 12 juil. 2009 à 18:07
Attention attention : mise à jour de l'algorithme. Désormais, il travaille sur des blocs de 512 bits. Ainsi l'on introduit une nouvelle notion : le "padding" ou remplissage. De la même façon que la plupart des fonctions de hash, l'on adapte la taille de la donnée en ajoutant à la fin un bit à 1 (donc un octet de valeur 128), puis en ajoutant autant de bits à 0 qu'il faut pour obtenir une taille multiple de 512 bits. J'ai également changé la table de hashage pour la rendre compatible avec le nouvel algorithme qui est totalement différent, donc j'ai aussi changé le polynome. Pas de bugs connus.
Une autre nouveauté : les fonctions de cryptage/décryptage des hashages sont mises à jour : à présent ce n'est plus une clef polynumérique mais une clef binaire (par exemple, si le premier bit est à 1, le premier caractère du hash est incrémenté, sinon il est décrémenté). Le cryptage des hashs permet de les envoyer sur un canal non sécurisé (cependant il faut se mettre d'accord sur la clef sur un canal sécurisé au préalable).
Cordialement, Bacterius !
debiars87
Messages postés43Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention25 juin 2009 17 juin 2009 à 09:00
Je veux dire Exellent Amélioration bravo !!
Debiars Junior
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 16 juin 2009 à 16:48
Bon, nouvelle mise à jour : ajout d'une fonction qui compare deux zones mémoire (c'est rapide et efficace, car il effectue le hash des deux zones mémoire et compare ces derniers), cela peut être pratique pour comparer rapidement deux tableaux de données par exemple. Et une documentation complète de l'algorithme, uniquement en anglais pour l'instant (la version française viendra un peu plus tard).
Cordialement, Bacterius !
debiars87
Messages postés43Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention25 juin 2009 15 juin 2009 à 17:02
ta raison ADMIN
DeBiars JUNIOR
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 15 juin 2009 à 17:00
@Debiars87:
La critique (constructive) sous-entend un minimum de connaissance et de compréhension du sujet et du code ...
à bon entendeur ...
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 15 juin 2009 à 17:00
Contador lol
Il sort souvent celui-là ^^
Cordialement, Bacterius !
debiars87
Messages postés43Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention25 juin 2009 15 juin 2009 à 16:59
Un exemple à suivre et à imiter dans la façon à programmer
Hein CONTADOR !!
DEBIARS JUNIOR,
debiars87
Messages postés43Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention25 juin 2009 15 juin 2009 à 16:57
6/10
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 15 juin 2009 à 16:45
hou là là c'est chaud..
En tous cas, même si le résultat n'est peut-être pas celui attendu par certains on peut féliciter Bacterius pour son opiniatreté sachant aussi resté à l'écoute des autres.
un exemple à suivre..
cantador
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 15 juin 2009 à 16:42
Non mais développe tes arguments ! Je suis désolé mais pour l'instant je ne comprends pas très bien pourquoi tu viens critiquer ... tu me renvoies sur une source traitant de brute-force. Très bien ... je pense que tu as quelque chose à reprocher à mon brute-force : je te le concède, il n'est pas terrible. Mais sois explicite ! Tu ne développes aucune de tes remarques ... je ne suis pas devin encore une fois !
Cordialement, Bacterius !
debiars87
Messages postés43Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention25 juin 2009 15 juin 2009 à 16:37
Excuse moi pour le dérangement alors..
Merci pour ton attention
à bientôt
Debiars Junior
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 15 juin 2009 à 16:30
Je ne me suis pas penché sur le brute-force, mon cher. L'intérêt principal de la source était ... l'algorithme. Je ne sais pas si tu as remarqué mais on est pas en MD5 là ...
Cordialement, Bacterius !
debiars87
Messages postés43Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention25 juin 2009 15 juin 2009 à 16:27
Meme si tu n'aime le C++ je te conseil vivement de jetter un coup d'oeil la dessus
www.cppfrance.com/codes/ALGORITHME-FORCE-BRUTE-HASH-MD5_44190.aspx
Very simple Bacterius
Tu va vite accepter ma note je veux dire 6/10
franchement du n'importe quoi
DEBIARS JUNIOR
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 15 juin 2009 à 16:18
Hmm ... j'ai écrit mon message avant de voir ton 2eme commentaire. Vivement une actualisation automatique ...
Les mauvaises notes je m'en fiche, mais je préfère (comme tout le monde) en avoir des bonnes, et ce que je préfère avant tout c'est que les gens justifient leur note ...
Cordialement, Bacterius !
PS : je ne fais pas dans le web-designing, je ne suis pas un admin, je ne peux rien faire pour ta note. Mais ça sera peut-être rectifié si un admin passe par là.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 15 juin 2009 à 16:16
Ok cher Debiars87, ici on est pas là pour faire que nos codes soient utilisés partout, on est ici pour apprendre. Alors j'ai mis un maximum d'exemples et de commentaires pour bien détailler ce que j'ai fait, pour que vous compreniez mon raisonnement. Et puis si tu as trouvé mieux, très bien, alors va le télécharger et ne regarde même pas mon code ;) ça n'en vaut pas la peine n'est-ce pas ? Et puis tant qu'à faire, allez, pour l'em...bêter, autant mettre une sale note :D
Ah bravo ...
Cordialement, Bacterius !
debiars87
Messages postés43Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention25 juin 2009 15 juin 2009 à 16:15
Mais je trouve ça un bonne tentative
Ah pardon pour la note!!
je crois que je suis tromper de touche je voulais mettre 6/10
Je sais que tu n'aime pas les mauvaises notes lol
alors aider moi à rectifier la note avec tes connaissances avec Les ADMINS
hhhh
Debiars Junior,
debiars87
Messages postés43Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention25 juin 2009 15 juin 2009 à 16:10
Ok cher Bactérius
Trop de code pour une application simple
parceque j'ai trouvé mieux sur internet dans le plus grand site de code source
"Source FORGE " excuser moi pour la PUB
à bientot
Debiars Junior,
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 15 juin 2009 à 16:01
Ah en passant, merci pour la note, ça fait plaisir ;) Tu t'es jamais demandé pourquoi, au bac, les professeurs sont tenus de justifier un 0 ou un 20 ? Justifie la note que tu as attribuée à ma source, mais de façon claire et ordonnée merci. Je suis pas dans ta tête.
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 15 juin 2009 à 15:58
Pardon ? Explique-toi Debiars87 ... qu'entends-tu par "rien du tout" ? J'ai bossé sur ce projet, alors explique-toi merci.
Cordialement, Bacterius !
debiars87
Messages postés43Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention25 juin 2009 15 juin 2009 à 15:55
Trop d'explication pour rien detout !!
Donc un peu de réalisme Bacterius !!
Debiars87
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 7 juin 2009 à 19:27
Ouais.
Mais c'est tout de même étrange que les chaînes '1234' et '1200' (en unicode) soient équivalentes (en ascii) ...
Cordialement, Bacterius !
djmmix
Messages postés152Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention29 avril 2009 7 juin 2009 à 18:05
ha je savais bien que c'était un problème d'unicode :p
merci pour la mise a jour CIREC et Bactérius :)
have you fun
jeffray03
Messages postés19Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention 7 juin 2012 7 juin 2009 à 00:18
super!!!
ca marche nikel
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 6 juin 2009 à 16:48
Tada ! Nouvelle option dans l'exemple n°2, le test de collisions ! J'ai eu cette idée il y a quelques minutes, j'ai donc décidé de la mettre en oeuvre. Elle a pour but de détecter des collisions de hash.
Il part d'un principe fondamental du hash : que pour chaque donnée x, aucune autre donnée ne peut avoir le même hash que la donnée x (en théorie).
On va donc partir d'une chaîne de base (on part de la chaîne nulle par convention), puis on va hasher la représentation textuelle de ce hash. On va alors obtenir un autre hash, qui est normalement unique (puisque le hash de la chaîne nulle est unique). On va répéter l'opération un certain nombre de fois.
Voilà pour la théorie. En pratique, on va faire ça avec une liste de chaînes, à l'aide d'une boucle. On va interdire l'ajout des doublons dans la liste de chaînes. A la fin, on va comparer le nombre de chaînes dans la liste avec le nombre de fois que l'on devait répéter l'opération. On saura alors s'il y avait eu des doublons ou non (en comparant ces deux nombres).
Voilà, c'est très simple et malgré tout très efficace (du point de vue de la méthode : en performance, il y a beaucoup mieux à faire, j'ai fait ça rapidement, il y aura sans doute une amélioration pour la performance).
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 5 juin 2009 à 17:04
Bon voilà Jeffray03, essaye maintenant, ça devrait marcher. Avec la version Unicode, j'obtiens 2 hashs différents pour '1200' et '1234'.
Merci Cirec, j'ai reproduit l'exemple que tu m'as donné, dans les sources mises à jour, comme mesure intermédiaire. Mais je suis d'accord, je pense qu'il doit y avoir un moyen d'éviter 2 transtypages à chaque hash ...
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 5 juin 2009 à 16:49
Je vais mettre tout ça à jour. Puisque Cirec a modifié l'exemple Global Example qui n'existe plus, je vais adapter le code de la même façon pour le nouvel exemple. Je m'y mets ... Merci Cirec je me disais bien que c'était un problème d'unicode.
Cordialement, Bacterius !
jeffray03
Messages postés19Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention 7 juin 2012 5 juin 2009 à 14:35
Merci, jŽattend.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 5 juin 2009 à 14:17
j'ai un code qui fonctionne pour D7 ET D2009
je te l'envoie par mail ... surveilles ta boite ;)
etc. etc. sinon on est en Unicode "WideString"
plus encore quelques conversions explicites pour faire taire les messages du compilateur ^^;
j'ai pas fait dans la finesse ... j'ai modifié tout le code ... mais en prenant un peut de temps et en utilisant les directives de compilations et la nouvelle unité mise à disposition par D2009 "AnsiString.pas" ont peu produire un code plus simple et plus "propre" pour les "toutes" les versions de Delphi
ps: par défaut D2009 est en Unicode.
jeffray03
Messages postés19Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention 7 juin 2012 5 juin 2009 à 10:40
salut suite a ta demande, jŽai effectué quelque test:
voici ce que cela donne :
avec delphi 2009:
1234 ==> 734458EE8614FA84139A58B361741A8E
1200 ==> 734458EE8614FA84139A58B361741A8E
avec delphi 7
1234 ==> 523B512BD263691E444B741A78627A42
1200 ==> CC25D7BB10B9F10377EEB059CB64CCFD
je crois kil ya un problem avec le string declaré, je vais essayer de mettre les string en AnsiString.
je crois que cŽest de la que vient le probleme.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 5 juin 2009 à 09:28
Effectivement cela peut avoir son importance. Mais il est plus qu'improbable qu'un passage en unicode transforme le hash de '1234' en hash de '1200', unicode ou non ... Les chances sont extrêmement minces ... Mais pourquoi pas ?
Cordialement, Bacterius !
djmmix
Messages postés152Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention29 avril 2009 4 juin 2009 à 18:53
salut bactérius,
je c'est pas si dans delphi 7 l'unicode est implanter mais les string sous delphi 6 son en ascii et sur delphi 2009 il sont en unicode sa a peut-être un impact j'ai développer des application porté de delphi 6 a 2009 il a fallut pour mon code asm faire une amélioration du a sa, je suis pas sur je vais testé sa et je te tien au parfum ^^
pas mal ta mise a jours pour le brute :) de 1m30s a 10 s c'est énorme ^^
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 4 juin 2009 à 17:46
Bon j'ai remarqué un sérieux problème de codage dans la fonction récursive de brute-force "Search". En effet, l'algorithme de récursivité redémarrait à 0 pour chaque nouvelle longueur, d'où une perte importante de temps. Le nouvel algorithme corrige tout ça (mdp de 3 caractères passe de 1m30 à 10 secondes environ). Mais on peut encore mieux faire ...
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 4 juin 2009 à 17:01
Peu importe l'exemple que tu as compilé, c'est le code de l'unité LEA_Hash qui est important.
Je voudrais que tu fasses les démarches suivantes pour essayer de nous aider à comprendre pourquoi le code généré par D7 et D2009 n'est pas le même, car cela nous intéresse autant que ça t'énerve.
Voici ce que je te demande de faire :
1. Compiler (a partir de Delphi 7) et lancer un exemple qui puisse donner le hash d'une suite de caractères.
2. Copier le hash de la chaîne de caractères '1200' sans les guillements dans le bloc-notes. Indiquer sous quel compilateur le hash a été obtenu.
3. Copier le hash de la chaîne de caractères '1234' sans les guillements dans le bloc-notes. Indiquer sous quel compilateur le hash a été obtenu.
4. Copier le hash de la chaîne de caractères nulle (rien dans la boîte de saisie) dans le bloc-notes. Indiquer sous quel compilateur le hash a été obtenu.
5. Répéter les étapes 1 à 4 en utilisant Delphi 2009 comme compilateur.
6. Copier le contenu du bloc-notes dans un nouveau commentaire à ma source (ou envoie-moi un message privé).
7. C'est fini ! Cela devrait nous aider à voir le problème.
Cordialement, Bacterius !
jeffray03
Messages postés19Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention 7 juin 2012 4 juin 2009 à 12:10
pour les hashs, je nŽai que compilé lŽexemple que tu as posté. rien de plus et il utilise
Z := #0;
dans les 2 cas.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 3 juin 2009 à 20:52
Voilà, nouvel exemple, une sorte de mélange entre Password Example et Global Example ... Voir description de la source, j'ai mis à jour.
Sinon, petite nouveauté, j'avais besoin d'une barre de progression à état indéfini (pour le brute-force), j'ai donc créé un composant qui surcharge le composant TProgressBar existant. Rien de très compliqué ...
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 3 juin 2009 à 13:07
Oui ben j'ai compris, je te demande les hashs sous Delphi 7 ET sous Delphi 2009.
Merci.
Cordialement, Bacterius !
jeffray03
Messages postés19Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention 7 juin 2012 3 juin 2009 à 01:09
cŽest sous Delphi 2009 que cela ne marche pas.
avec delphi 7 cela marche tres bien.
je mŽexcuse de nŽetre pas ete plus clair
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 2 juin 2009 à 18:23
@Djmmix : merci pour l'info :p je suis encore newbie en asm ...
@Jeffray : Etrange, indeed ... un algorithme de hash se doit déterministe. Pourrais-tu m'indiquer (en commentaire de la source ou en mp) les hashs des chaînes suivantes précisant si c'est sous Delphi 7 ou Delphi 2009 ? Normalement, il n'y a rien de bien exotique ...
Voici les chaîne à vérifier :
[chaîne nulle : #0]
'1234'
'1200'
A tester sous les 2 compilateurs chacun.
Cordialement, Bacterius !
PS : pour le brute-force, vous ne devrez pas mettre trop de temps pour 4 caractères, mon PC me fait du 1 million de passes par seconde, et il est pas à son max.
jeffray03
Messages postés19Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention 7 juin 2012 2 juin 2009 à 11:36
la il ya donc un probleme chez moi, lorsque jŽutilise delphi 7, et que je donne le code a hasher '1234', et apres jŽappelle le bruteforçage, il me donne les '1234' que jŽai mis auparavant.
mais avec delphi2009 il me donne '1200'.
car jŽutilise bien delphi 7 et delphi 2009.
djmmix
Messages postés152Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention29 avril 2009 2 juin 2009 à 11:31
@bactérius:"Delphi va se compliquer la vie quand il assemble mon algorithme (avec les Inc, xor, and, etc ...). "
pas tellement en faite le code asm réaliser genre b:= a xor c fera en asm compiler xor eax,edx (enfin j ai prit les registre entier sa aurai pu etre un byte etc mais sa serai trop technique ^^ ou même d'autre registre ) apres la valeur de eax peut etre mi soit dans une adresse mémoire ou utiliser pour les instruction suivant donc de ce coté delphi s'en sort pas trop mal pour le code compiler ^^
djmmix
Messages postés152Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention29 avril 2009 2 juin 2009 à 11:26
j'ai delphi 2009 je peut te dire que le code marche très bien :)
pour le bruteforce j'aurai codé la parti du bruteforçage en asm ( plus rapide ^^ ) même si delphi fait un code un peut près propre ^^ (quand il réalise pas trop de call partout :p )
j'ai tester sous delphi 6 et 2009 aucun soucis rencontré très bonne source :)
jeffray03
Messages postés19Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention 7 juin 2012 2 juin 2009 à 09:46
Salut, une petite Question, pourquoi le code ne fonctionne pas avec Delphi 2009?
est ce un probleme de compatibilité?
Merci
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 27 mai 2009 à 23:00
Bon petite MAJ afin de trier la liste des fichiers hashés, c'est surtout pour mon usage afin de détecter des collisions (je prends des fichiers dans ma machine - il y a de tout dans le cache internet). C'est peut-être un poil moins logique qu'avant, mais bon ça m'aide.
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 27 mai 2009 à 17:38
Moi aussi j'utilise très peu d'ASM, je ne sais d'ailleurs pas coder en asm, je tâtonne encore, mais ça commence à venir. J'avais fait un test en asm de la 1ere partie de l'algorithme (avant les Inc, le mixage), mais je recevais à chaque fois une violation d'accès dans les Inc suivant l'asm, je pense que je me suis trompé entre la variable et le pointeur (j'ai peut-être incrémenté l'adresse lol).
Cordialement, Bacterius !
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 27 mai 2009 à 16:03
J'utilise très peu ASM..
Il faudrait poser la question sur le forum en question ou à f0xi.
Il semble néanmoins que certains calculs gagnent en vitesse à être écrits directement en assembleur.
A chaque fois, il faut faire la part entre le gain en vitesse, la complexité et/ou la maintenance du code.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 27 mai 2009 à 15:30
lol
Mais dis-moi, j'ai l'impression que Delphi va se compliquer la vie quand il assemble mon algorithme (avec les Inc, xor, and, etc ...). Peut-être serait-il plus rapide de l'écrire directement en assembleur ? Quand je regarde la fenêtre "CPU", Delphi fait un code pas possible pour une addition, un xor et un or ...
Cordialement, Bacterius !
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 27 mai 2009 à 14:54
hem..j'ai du faire une erreur...
8/10 pour cette belle source.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 27 mai 2009 à 14:48
Evidemment si tu mets le numérateur négatif, et que le dénominateur est toujours positif (c'est un carré), ça donnera forcément un nombre négatif ... lol
Cordialement, Bacterius !
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 27 mai 2009 à 14:37
bon la note hummhhhh...
voyons voir..
(16*7 - 32*7) / power(7,2) = -2,28
aie !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 27 mai 2009 à 14:32
Euh non je n'ai pas fait varier le polynome, ni la table, j'ai juste changé le "and" en "or" dans les mixages. Mais ça pourrait être une bonne idée de faire varier le polynome. Je remets la main sur le code qui me calcule ça et je le garde précieusement.
Cordialement, Bacterius !
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 27 mai 2009 à 14:25
Je suppose que dans la maj tu as fait varier le polynome $3E8A42F7 ?
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 27 mai 2009 à 14:23
Effectivement, c'est un hachage de 16 octets, merci Cantador :) je mets à jour.
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 27 mai 2009 à 14:22
Oh la la oui je me suis trompé ... il y a un grave problème de logique, mais je ne vois pas où ...
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 27 mai 2009 à 14:16
@Cantador : Ben oui : 32 octets <=> 128 bits ? Je me suis peut-être trompé, je vais voir.
J'ai fait une MAJ, j'ai détecté une collision graçe à mon flair : vmmreg32.dll et twunk_16.exe dans le dossier Windows. Pas la même taille, ni la même info, mais hash identique. J'ai légérement modifié l'algorithme, la collision a été écartée, mais j'en redoute d'autres ...
Cordialement, Bacterius !
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 27 mai 2009 à 14:13
cet algorithme va réduire........
...........(de taille fixe : 32 octets).
Hachage <---- de 128 bits, c'est la réunion de W, X, Y et Z (32 bits chacun)
?
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 25 mai 2009 à 21:23
J'ai également corrigé la fonction HashStr : plutôt que de mettre inutilement en buffer (perte de temps gigantesque, et aussi de mémoire), je passe directement un pointeur sur la chaîne, ça va plus vite et c'est plus élégant.
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 25 mai 2009 à 21:16
Non en fait c'est une mauvaise idée de faire le changement cité plus haut, je ferai des unités séparées pour le 256 et le 512 (si ils viennent).
J'ai sinon ajouté un nouvel exemple, voyez la description.
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 24 mai 2009 à 21:25
La prochaine étape sera peut-être d'ajouter une variable "Bits" qui contiendra le nombre de bits du hash (128, 256, 512, 1024 ...). Rien de très compliqué, il faudra juste agrandir un peu la table HashTable, et remplacer les A, B, C, D du THash par un array [0..(Bits - 1) div 32] of Longword;
Je ne mets pas à jour encore à cause des exemples qu'il faudrait refaire ... on verra mercredi prochain.
Cordialement, Bacterius !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 24 mai 2009 à 20:09
Je t'en prie Djmmix ! Si tu as des remarques, même négatives, n'hésite pas !
Cordialement, Bacterius !
djmmix
Messages postés152Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention29 avril 2009 24 mai 2009 à 16:53
6 août 2009 à 23:23
Cordialement, Bacterius !
5 août 2009 à 18:20
- un nouveau logo (lol)
- une modification des fonctions HashCrypt et HashUncrypt : elles travaillent à présent directement sur l'objet THash et non pas sur sa représentation en chaîne. C'est plus rapide et plus efficace (la clef peut être n'importe-quoi, car on calcule son hash, puis on additionne les deux hashs pour crypter et on soustrait pour décrypter). Au fait, dans la dernière version de ces fonctions, un bug s'est glissé ...
- petite erreur au niveau de l'algorithme (l'avant-avant-dernier double-mot du hash (Hash[$D]) était constant dû à une petite erreur d'inattention.
Pour ceux que ça intéresse, les caractéristiques cryptographiques de l'algorithme (certaines) :
- blocs de 512 bits
- 16 rondes par bloc
- une fonction F, qui est appellée 256 fois par bloc, qui prend en paramètre quatre entiers, ainsi qu'une valeur entre 1 et 4, et qui retourne un seul entier. Elle effectue quatre types d'opérations différentes (selon la valeur du dernier paramètre), en utilisant les quatres premiers paramètres).
- une "expansion" de chaque entier du bloc : en effet, pour chaque ronde - donc pour chaque entier 32 bits du bloc en cours, on sépare les quatre octets de cet entier, puis on associe à chaque octet une valeur sur 32 bits (voir tableau HashTable). Cela permet de créer un effet d'avalanche intéressant du point de vue mathématique.
- une recalculation des tableaux en constante (HashInit et HashTable), à partir de nombres premiers. En effet :
* le tableau HashInit est basé sur le calcul suivant : prenons un grand nombre premier ($96438AF7 pour ce tableau). Imaginons un tableau Prime, de 16 éléments (0..15), contenant les 16 premiers nombres premiers (en partant de 2 inclus). Alors on a le calcul suivant :
HashInit[0] = $96438AF7 * Primes[0];
pour I 1 à 15 faire HashInit[I] ($96438AF7 * Primes[I]) + ($96438AF7 mod Primes[I]);
* pour le tableau HashTable, c'est la même chose, sauf qu'on se base sur le nombre premier $1C8CFBFF, et que les tableaux HashTable et Prime contiennent 256 éléments.
- lors des 16 rondes de chaque bloc, les seize entiers du hash sont mélangés dans tous les sens, je ne saurais vous décrire ce qu'ils doivent endurer à chaque ronde :'( .... lol
______________________
Et voilà, je pense que c'est fini, sauf si l'on trouve des bugs ;-)
Bonne chance pour étudier ça, Djmmix, le coup de l'expansion du bloc est plus que pénible à cryptanalyser ... ;-)
Cordialement, Bacterius !
3 août 2009 à 12:22
Cordialement, Bacterius !
3 août 2009 à 12:06
je vais étudié sa de près :)
merci pour tout tes éfforts pour cet algo :)
2 août 2009 à 21:29
Cordialement, Bacterius !
24 juil. 2009 à 14:32
En effet après une petite analyse, j'ai remarqué que les hashages ne changeaient pas beaucoup dans certaines conditions, donc j'ai réintroduit les tables de hashage (associées à un nouveau concept ...). Je pense qu'il s'agira de la dernière modification de l'algorithme en lui-même ...
Cordialement, Bacterius !
19 juil. 2009 à 03:18
Cordialement, Bacterius !
16 juil. 2009 à 20:33
De plus, l'algorithme a été renforcé cryptographiquement parlant : effectivement, la version précédente resistait difficilement à une attaque par préimage, d'après certains tests concluants). Pour finir, les documentations ont totalement été remises à jour, et la table de hashage (contenant les 64 valeurs) n'existe plus, devenant totalement obsolète avec cette nouvelle version.
Cordialement, Bacterius !
12 juil. 2009 à 18:07
Une autre nouveauté : les fonctions de cryptage/décryptage des hashages sont mises à jour : à présent ce n'est plus une clef polynumérique mais une clef binaire (par exemple, si le premier bit est à 1, le premier caractère du hash est incrémenté, sinon il est décrémenté). Le cryptage des hashs permet de les envoyer sur un canal non sécurisé (cependant il faut se mettre d'accord sur la clef sur un canal sécurisé au préalable).
Cordialement, Bacterius !
17 juin 2009 à 09:00
Debiars Junior
16 juin 2009 à 16:48
Cordialement, Bacterius !
15 juin 2009 à 17:02
DeBiars JUNIOR
15 juin 2009 à 17:00
La critique (constructive) sous-entend un minimum de connaissance et de compréhension du sujet et du code ...
à bon entendeur ...
15 juin 2009 à 17:00
Il sort souvent celui-là ^^
Cordialement, Bacterius !
15 juin 2009 à 16:59
Hein CONTADOR !!
DEBIARS JUNIOR,
15 juin 2009 à 16:57
15 juin 2009 à 16:45
En tous cas, même si le résultat n'est peut-être pas celui attendu par certains on peut féliciter Bacterius pour son opiniatreté sachant aussi resté à l'écoute des autres.
un exemple à suivre..
cantador
15 juin 2009 à 16:42
Cordialement, Bacterius !
15 juin 2009 à 16:37
Merci pour ton attention
à bientôt
Debiars Junior
15 juin 2009 à 16:30
Cordialement, Bacterius !
15 juin 2009 à 16:27
www.cppfrance.com/codes/ALGORITHME-FORCE-BRUTE-HASH-MD5_44190.aspx
Very simple Bacterius
Tu va vite accepter ma note je veux dire 6/10
franchement du n'importe quoi
DEBIARS JUNIOR
15 juin 2009 à 16:18
Les mauvaises notes je m'en fiche, mais je préfère (comme tout le monde) en avoir des bonnes, et ce que je préfère avant tout c'est que les gens justifient leur note ...
Cordialement, Bacterius !
PS : je ne fais pas dans le web-designing, je ne suis pas un admin, je ne peux rien faire pour ta note. Mais ça sera peut-être rectifié si un admin passe par là.
15 juin 2009 à 16:16
Ah bravo ...
Cordialement, Bacterius !
15 juin 2009 à 16:15
Ah pardon pour la note!!
je crois que je suis tromper de touche je voulais mettre 6/10
Je sais que tu n'aime pas les mauvaises notes lol
alors aider moi à rectifier la note avec tes connaissances avec Les ADMINS
hhhh
Debiars Junior,
15 juin 2009 à 16:10
Trop de code pour une application simple
parceque j'ai trouvé mieux sur internet dans le plus grand site de code source
"Source FORGE " excuser moi pour la PUB
à bientot
Debiars Junior,
15 juin 2009 à 16:01
Cordialement, Bacterius !
15 juin 2009 à 15:58
Cordialement, Bacterius !
15 juin 2009 à 15:55
Donc un peu de réalisme Bacterius !!
Debiars87
7 juin 2009 à 19:27
Mais c'est tout de même étrange que les chaînes '1234' et '1200' (en unicode) soient équivalentes (en ascii) ...
Cordialement, Bacterius !
7 juin 2009 à 18:05
merci pour la mise a jour CIREC et Bactérius :)
have you fun
7 juin 2009 à 00:18
ca marche nikel
6 juin 2009 à 16:48
Il part d'un principe fondamental du hash : que pour chaque donnée x, aucune autre donnée ne peut avoir le même hash que la donnée x (en théorie).
On va donc partir d'une chaîne de base (on part de la chaîne nulle par convention), puis on va hasher la représentation textuelle de ce hash. On va alors obtenir un autre hash, qui est normalement unique (puisque le hash de la chaîne nulle est unique). On va répéter l'opération un certain nombre de fois.
Voilà pour la théorie. En pratique, on va faire ça avec une liste de chaînes, à l'aide d'une boucle. On va interdire l'ajout des doublons dans la liste de chaînes. A la fin, on va comparer le nombre de chaînes dans la liste avec le nombre de fois que l'on devait répéter l'opération. On saura alors s'il y avait eu des doublons ou non (en comparant ces deux nombres).
Voilà, c'est très simple et malgré tout très efficace (du point de vue de la méthode : en performance, il y a beaucoup mieux à faire, j'ai fait ça rapidement, il y aura sans doute une amélioration pour la performance).
Cordialement, Bacterius !
5 juin 2009 à 17:04
Merci Cirec, j'ai reproduit l'exemple que tu m'as donné, dans les sources mises à jour, comme mesure intermédiaire. Mais je suis d'accord, je pense qu'il doit y avoir un moyen d'éviter 2 transtypages à chaque hash ...
Cordialement, Bacterius !
5 juin 2009 à 16:49
Cordialement, Bacterius !
5 juin 2009 à 14:35
5 juin 2009 à 14:17
je te l'envoie par mail ... surveilles ta boite ;)
et en effet il faut modifier quelques types:
string > ansistring
PChar > PAnsiChar
Char > AnsiChar
etc. etc. sinon on est en Unicode "WideString"
plus encore quelques conversions explicites pour faire taire les messages du compilateur ^^;
j'ai pas fait dans la finesse ... j'ai modifié tout le code ... mais en prenant un peut de temps et en utilisant les directives de compilations et la nouvelle unité mise à disposition par D2009 "AnsiString.pas" ont peu produire un code plus simple et plus "propre" pour les "toutes" les versions de Delphi
ps: par défaut D2009 est en Unicode.
5 juin 2009 à 10:40
voici ce que cela donne :
avec delphi 2009:
1234 ==> 734458EE8614FA84139A58B361741A8E
1200 ==> 734458EE8614FA84139A58B361741A8E
avec delphi 7
1234 ==> 523B512BD263691E444B741A78627A42
1200 ==> CC25D7BB10B9F10377EEB059CB64CCFD
je crois kil ya un problem avec le string declaré, je vais essayer de mettre les string en AnsiString.
je crois que cŽest de la que vient le probleme.
5 juin 2009 à 09:28
Cordialement, Bacterius !
4 juin 2009 à 18:53
je c'est pas si dans delphi 7 l'unicode est implanter mais les string sous delphi 6 son en ascii et sur delphi 2009 il sont en unicode sa a peut-être un impact j'ai développer des application porté de delphi 6 a 2009 il a fallut pour mon code asm faire une amélioration du a sa, je suis pas sur je vais testé sa et je te tien au parfum ^^
pas mal ta mise a jours pour le brute :) de 1m30s a 10 s c'est énorme ^^
4 juin 2009 à 17:46
Cordialement, Bacterius !
4 juin 2009 à 17:01
Je voudrais que tu fasses les démarches suivantes pour essayer de nous aider à comprendre pourquoi le code généré par D7 et D2009 n'est pas le même, car cela nous intéresse autant que ça t'énerve.
Voici ce que je te demande de faire :
1. Compiler (a partir de Delphi 7) et lancer un exemple qui puisse donner le hash d'une suite de caractères.
2. Copier le hash de la chaîne de caractères '1200' sans les guillements dans le bloc-notes. Indiquer sous quel compilateur le hash a été obtenu.
3. Copier le hash de la chaîne de caractères '1234' sans les guillements dans le bloc-notes. Indiquer sous quel compilateur le hash a été obtenu.
4. Copier le hash de la chaîne de caractères nulle (rien dans la boîte de saisie) dans le bloc-notes. Indiquer sous quel compilateur le hash a été obtenu.
5. Répéter les étapes 1 à 4 en utilisant Delphi 2009 comme compilateur.
6. Copier le contenu du bloc-notes dans un nouveau commentaire à ma source (ou envoie-moi un message privé).
7. C'est fini ! Cela devrait nous aider à voir le problème.
Cordialement, Bacterius !
4 juin 2009 à 12:10
Z := #0;
dans les 2 cas.
3 juin 2009 à 20:52
Sinon, petite nouveauté, j'avais besoin d'une barre de progression à état indéfini (pour le brute-force), j'ai donc créé un composant qui surcharge le composant TProgressBar existant. Rien de très compliqué ...
Cordialement, Bacterius !
3 juin 2009 à 13:07
Merci.
Cordialement, Bacterius !
3 juin 2009 à 01:09
avec delphi 7 cela marche tres bien.
je mŽexcuse de nŽetre pas ete plus clair
2 juin 2009 à 18:23
@Jeffray : Etrange, indeed ... un algorithme de hash se doit déterministe. Pourrais-tu m'indiquer (en commentaire de la source ou en mp) les hashs des chaînes suivantes précisant si c'est sous Delphi 7 ou Delphi 2009 ? Normalement, il n'y a rien de bien exotique ...
Voici les chaîne à vérifier :
[chaîne nulle : #0]
'1234'
'1200'
A tester sous les 2 compilateurs chacun.
Cordialement, Bacterius !
PS : pour le brute-force, vous ne devrez pas mettre trop de temps pour 4 caractères, mon PC me fait du 1 million de passes par seconde, et il est pas à son max.
2 juin 2009 à 11:36
mais avec delphi2009 il me donne '1200'.
car jŽutilise bien delphi 7 et delphi 2009.
2 juin 2009 à 11:31
pas tellement en faite le code asm réaliser genre b:= a xor c fera en asm compiler xor eax,edx (enfin j ai prit les registre entier sa aurai pu etre un byte etc mais sa serai trop technique ^^ ou même d'autre registre ) apres la valeur de eax peut etre mi soit dans une adresse mémoire ou utiliser pour les instruction suivant donc de ce coté delphi s'en sort pas trop mal pour le code compiler ^^
2 juin 2009 à 11:26
pour le bruteforce j'aurai codé la parti du bruteforçage en asm ( plus rapide ^^ ) même si delphi fait un code un peut près propre ^^ (quand il réalise pas trop de call partout :p )
j'ai tester sous delphi 6 et 2009 aucun soucis rencontré très bonne source :)
2 juin 2009 à 09:46
est ce un probleme de compatibilité?
Merci
27 mai 2009 à 23:00
Cordialement, Bacterius !
27 mai 2009 à 17:38
Cordialement, Bacterius !
27 mai 2009 à 16:03
Il faudrait poser la question sur le forum en question ou à f0xi.
Il semble néanmoins que certains calculs gagnent en vitesse à être écrits directement en assembleur.
A chaque fois, il faut faire la part entre le gain en vitesse, la complexité et/ou la maintenance du code.
27 mai 2009 à 15:30
Mais dis-moi, j'ai l'impression que Delphi va se compliquer la vie quand il assemble mon algorithme (avec les Inc, xor, and, etc ...). Peut-être serait-il plus rapide de l'écrire directement en assembleur ? Quand je regarde la fenêtre "CPU", Delphi fait un code pas possible pour une addition, un xor et un or ...
Cordialement, Bacterius !
27 mai 2009 à 14:54
8/10 pour cette belle source.
27 mai 2009 à 14:48
Cordialement, Bacterius !
27 mai 2009 à 14:37
voyons voir..
(16*7 - 32*7) / power(7,2) = -2,28
aie !
27 mai 2009 à 14:32
Cordialement, Bacterius !
27 mai 2009 à 14:25
27 mai 2009 à 14:23
Cordialement, Bacterius !
27 mai 2009 à 14:22
Cordialement, Bacterius !
27 mai 2009 à 14:16
J'ai fait une MAJ, j'ai détecté une collision graçe à mon flair : vmmreg32.dll et twunk_16.exe dans le dossier Windows. Pas la même taille, ni la même info, mais hash identique. J'ai légérement modifié l'algorithme, la collision a été écartée, mais j'en redoute d'autres ...
Cordialement, Bacterius !
27 mai 2009 à 14:13
...........(de taille fixe : 32 octets).
Hachage <---- de 128 bits, c'est la réunion de W, X, Y et Z (32 bits chacun)
?
25 mai 2009 à 21:23
Cordialement, Bacterius !
25 mai 2009 à 21:16
J'ai sinon ajouté un nouvel exemple, voyez la description.
Cordialement, Bacterius !
24 mai 2009 à 21:25
Je ne mets pas à jour encore à cause des exemples qu'il faudrait refaire ... on verra mercredi prochain.
Cordialement, Bacterius !
24 mai 2009 à 20:09
Cordialement, Bacterius !
24 mai 2009 à 16:53
ta source m'a l'air très intéressante :)
je vais regardé sa de plus près merci ^^