Il permet de trouver, en moins d'une heure, des collisions sur du MD5
(<http://www.stachliu.com/md5coll.c>) et quelques secondes pour du MD4
(<http://www.stachliu.com/md4coll.c>)
Voir aussi
<http://www.stachliu.com.nyud.net:8090/collisions.html>
de toute évidence on pourrait accélerer le processus par :
Q0[16] ^= 1 << (random() % 30)
ou en enlevant la division et en agrandissant le tableau
Q0[16] ^= mask22[random() & 31];
ou les deux en modifiant légerement l'algo (pas sur que ca marche du coup!)
Q0[16] ^= 1 << (random() & 31)
"Xavier Roche" a écrit dans le message de news: dlekh2$lj5$
Il permet de trouver, en moins d'une heure, des collisions sur du MD5 (<http://www.stachliu.com/md5coll.c>) et quelques secondes pour du MD4 (<http://www.stachliu.com/md4coll.c>)
Voir aussi <http://www.stachliu.com.nyud.net:8090/collisions.html>
de toute évidence on pourrait accélerer le processus par :
Q0[16] ^= 1 << (random() % 30)
ou en enlevant la division et en agrandissant le tableau
Q0[16] ^= mask22[random() & 31];
ou les deux en modifiant légerement l'algo (pas sur que ca marche du coup!)
Q0[16] ^= 1 << (random() & 31)
"Xavier Roche" <xroche@free.fr.NOSPAM.invalid> a écrit dans le message de
news: dlekh2$lj5$1@news.httrack.net...
Il permet de trouver, en moins d'une heure, des collisions sur du MD5
(<http://www.stachliu.com/md5coll.c>) et quelques secondes pour du MD4
(<http://www.stachliu.com/md4coll.c>)
Voir aussi
<http://www.stachliu.com.nyud.net:8090/collisions.html>
de toute évidence on pourrait accélerer le processus par :
Q0[16] ^= 1 << (random() % 30)
ou en enlevant la division et en agrandissant le tableau
Q0[16] ^= mask22[random() & 31];
ou les deux en modifiant légerement l'algo (pas sur que ca marche du coup!)
Q0[16] ^= 1 << (random() & 31)
"Xavier Roche" a écrit dans le message de news: dlekh2$lj5$
Il permet de trouver, en moins d'une heure, des collisions sur du MD5 (<http://www.stachliu.com/md5coll.c>) et quelques secondes pour du MD4 (<http://www.stachliu.com/md4coll.c>)
Voir aussi <http://www.stachliu.com.nyud.net:8090/collisions.html>
de toute évidence on pourrait accélerer le processus par :
Q0[16] ^= 1 << (random() % 30)
1. C'est plus court à écrire, mais il est loin d'être évident que ce soit plus rapide, suivant l'architecture. 2. La dernière valeur de la table ne respecte pas la règle...
Jacques. -- Oxado http://www.oxado.com/
Salut,
On Fri, 18 Nov 2005 12:36:44 +0100, gla <dsrf@gla.inv> wrote:
de toute évidence on pourrait accélerer le processus par :
Q0[16] ^= 1 << (random() % 30)
1. C'est plus court à écrire, mais il est loin d'être évident que ce soit
plus rapide, suivant l'architecture.
2. La dernière valeur de la table ne respecte pas la règle...
de toute évidence on pourrait accélerer le processus par :
Q0[16] ^= 1 << (random() % 30)
1. C'est plus court à écrire, mais il est loin d'être évident que ce soit plus rapide, suivant l'architecture. 2. La dernière valeur de la table ne respecte pas la règle...
Jacques. -- Oxado http://www.oxado.com/
gla
1. C'est plus court à écrire, mais il est loin d'être évident que ce soit plus rapide, suivant l'architecture.
Tous les processeurs modernes possèdent un modul de décalage en barillet qui met généralement 1 cycle pour decaller un registre quelquesoit le nombre de rotation qu'on lui demande.
Alors que l'acces à un tableau demande un petit peu plus (calcul d'adresse, chargement dasn le cache si ça n'y est pas, passage de la donnée dans le bus...)
Quant a la routine de division pour obtenir le modulo, elle prend généralement plusieurs cycles, voir même 10 sur un pentium.
2. La dernière valeur de la table ne respecte pas la règle...
Oui, c'est le problème.
1. C'est plus court à écrire, mais il est loin d'être évident que ce soit
plus rapide, suivant l'architecture.
Tous les processeurs modernes possèdent un modul de décalage en barillet qui
met généralement 1 cycle pour decaller un registre quelquesoit le nombre de
rotation qu'on lui demande.
Alors que l'acces à un tableau demande un petit peu plus (calcul d'adresse,
chargement dasn le cache si ça n'y est pas, passage de la donnée dans le
bus...)
Quant a la routine de division pour obtenir le modulo, elle prend
généralement plusieurs cycles, voir même 10 sur un pentium.
2. La dernière valeur de la table ne respecte pas la règle...
1. C'est plus court à écrire, mais il est loin d'être évident que ce soit plus rapide, suivant l'architecture.
Tous les processeurs modernes possèdent un modul de décalage en barillet qui met généralement 1 cycle pour decaller un registre quelquesoit le nombre de rotation qu'on lui demande.
Alors que l'acces à un tableau demande un petit peu plus (calcul d'adresse, chargement dasn le cache si ça n'y est pas, passage de la donnée dans le bus...)
Quant a la routine de division pour obtenir le modulo, elle prend généralement plusieurs cycles, voir même 10 sur un pentium.
2. La dernière valeur de la table ne respecte pas la règle...