Woofy
Pour les bons tuyaux me demander
Messages : 26 577 Inscrit le 11/01/02
Ville : Lyon
Non connecté
|
|
Posté le 17 février 2005 - 20 h 03 m 57 s |
|
|
J'ai un ptit probleme, faut que je recode MD5, j'ai la RFC, mais y a un passage, pour l'instant un seul, que je n'arrive pas a comprendre.
C'est le passage 3.1. Je met tout au cas ou le contexte serais important (et a mon avis il l'est).
Je ne veut pas de "google" ou "traducteur de voila" car en fait, c'est peut etre le sujet d'un exam que j'aurais demain, et je n'aurais que ca. En fait, tout ce que je demande c'est une traduction du passage 3.1 et au pire une explication de ce qui est demandé (je ne suis pas allé plus loin en fait, car ca ne sers a rien de sauter une étape).
1. Executive Summary
This document describes the MD5 message-digest algorithm. The
algorithm takes as input a message of arbitrary length and produces
as output a 128-bit "fingerprint" or "message digest" of the input.
It is conjectured that it is computationally infeasible to produce
two messages having the same message digest, or to produce any
message having a given prespecified target message digest. The MD5
algorithm is intended for digital signature applications, where a
large file must be "compressed" in a secure manner before being
encrypted with a private (secret) key under a public-key cryptosystem
such as RSA.
The MD5 algorithm is designed to be quite fast on 32-bit machines. In
addition, the MD5 algorithm does not require any large substitution
tables; the algorithm can be coded quite compactly.
The MD5 algorithm is an extension of the MD4 message-digest algorithm
1,2]. MD5 is slightly slower than MD4, but is more "conservative" in
design. MD5 was designed because it was felt that MD4 was perhaps
being adopted for use more quickly than justified by the existing
critical review; because MD4 was designed to be exceptionally fast,
it is "at the edge" in terms of risking successful cryptanalytic
attack. MD5 backs off a bit, giving up a little in speed for a much
greater likelihood of ultimate security. It incorporates some
suggestions made by various reviewers, and contains additional
optimizations. The MD5 algorithm is being placed in the public domain
for review and possible adoption as a standard.
For OSI-based applications, MD5's object identifier is
md5 OBJECT IDENTIFIER ::=
iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 5}
In the X.509 type AlgorithmIdentifier [3], the parameters for MD5
should have type NULL.
2. Terminology and Notation
In this document a "word" is a 32-bit quantity and a "byte" is an
eight-bit quantity. A sequence of bits can be interpreted in a
natural manner as a sequence of bytes, where each consecutive group
of eight bits is interpreted as a byte with the high-order (most
significant) bit of each byte listed first. Similarly, a sequence of
bytes can be interpreted as a sequence of 32-bit words, where each
consecutive group of four bytes is interpreted as a word with the
low-order (least significant) byte given first.
Let x_i denote "x sub i". If the subscript is an expression, we
surround it in braces, as in x_{i+1}. Similarly, we use ^ for
superscripts (exponentiation), so that x^i denotes x to the i-th
power.
Let the symbol "+" denote addition of words (i.e., modulo-232
addition). Let X <<< s denote the 32-bit value obtained by circularly
shifting (rotating) X left by s bit positions. Let not(X) denote the
bit-wise complement of X, and let X v Y denote the bit-wise OR of X
and Y. Let X xor Y denote the bit-wise XOR of X and Y, and let XY
denote the bit-wise AND of X and Y.
3. MD5 Algorithm Description
We begin by supposing that we have a b-bit message as input, and that
we wish to find its message digest. Here b is an arbitrary
nonnegative integer; b may be zero, it need not be a multiple of
eight, and it may be arbitrarily large. We imagine the bits of the
message written down as follows:
m_0 m_1 ... m_{b-1}
The following five steps are performed to compute the message digest
of the message.
3.1 Step 1. Append Padding Bits
The message is "padded" (extended) so that its length (in bits) is
congruent to 448, modulo 512. That is, the message is extended so
that it is just 64 bits shy of being a multiple of 512 bits long.
Padding is always performed, even if the length of the message is
already congruent to 448, modulo 512.
Padding is performed as follows: a single "1" bit is appended to the
message, and then "0" bits are appended so that the length in bits of
the padded message becomes congruent to 448, modulo 512. In all, at
least one bit and at most 512 bits are appended.
3.2 Step 2. Append Length
A 64-bit representation of b (the length of the message before the
padding bits were added) is appended to the result of the previous
step. In the unlikely event that b is greater than 264, then only
the low-order 64 bits of b are used. (These bits are appended as two
32-bit words and appended low-order word first in accordance with the
previous conventions.)
At this point the resulting message (after padding with bits and with
b) has a length that is an exact multiple of 512 bits. Equivalently,
this message has a length that is an exact multiple of 16 (32-bit)
words. Let M[0 ... N-1] denote the words of the resulting message,
where N is a multiple of 16.
3.3 Step 3. Initialize MD Buffer
A four-word buffer (A,B,C,D) is used to compute the message digest.
Here each of A, B, C, D is a 32-bit register. These registers are
initialized to the following values in hexadecimal, low-order bytes
first):
word A: 01 23 45 67
word B: 89 ab cd ef
word C: fe dc ba 98
word D: 76 54 32 10
3.4 Step 4. Process Message in 16-Word Blocks
We first define four auxiliary functions that each take as input
three 32-bit words and produce as output one 32-bit word.
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z) = XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
In each bit position F acts as a conditional: if X then Y else Z.
The function F could have been defined using + instead of v since XY
and not(X)Z will never have 1's in the same bit position.) It is
interesting to note that if the bits of X, Y, and Z are independent
and unbiased, the each bit of F(X,Y,Z) will be independent and
unbiased.
The functions G, H, and I are similar to the function F, in that they
act in "bitwise parallel" to produce their output from the bits of X,
Y, and Z, in such a manner that if the corresponding bits of X, Y,
and Z are independent and unbiased, then each bit of G(X,Y,Z),
H(X,Y,Z), and I(X,Y,Z) will be independent and unbiased. Note that
the function H is the bit-wise "xor" or "parity" function of its
inputs.
This step uses a 64-element table T[1 ... 64] constructed from the
sine function. Let T[i] denote the i-th element of the table, which
is equal to the integer part of 4294967296 times abs(sin(i)), where i
is in radians. The elements of the table are given in the appendix.
Do the following:
/* Process each 16-word block. */
For i = 0 to N/16-1 do
/* Copy block i into X. */
For j = 0 to 15 do
Set X[j] to M[i*16+j].
end /* of loop on j */
/* Save A as AA, B as BB, C as CC, and D as DD. */
AA = A
BB = B
CC = C
DD = D
/* Round 1. */
/* Let [abcd k s i] denote the operation
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
/* Do the following 16 operations. */
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]
[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]
[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
/* Round 2. */
/* Let [abcd k s i] denote the operation
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
/* Do the following 16 operations. */
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
/* Round 3. */
/* Let [abcd k s t] denote the operation
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
/* Do the following 16 operations. */
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
/* Round 4. */
/* Let [abcd k s t] denote the operation
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
/* Do the following 16 operations. */
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
/* Then perform the following additions. (That is increment each
of the four registers by the value it had before this block
was started.) */
A = A + AA
B = B + BB
C = C + CC
D = D + DD
end /* of loop on i */
3.5 Step 5. Output
The message digest produced as output is A, B, C, D. That is, we
begin with the low-order byte of A, and end with the high-order byte
of D.
This completes the description of MD5. A reference implementation in
C is given in the appendix.
4. Summary
The MD5 message-digest algorithm is simple to implement, and provides
a "fingerprint" or message digest of a message of arbitrary length.
It is conjectured that the difficulty of coming up with two messages
having the same message digest is on the order of 264 operations,
and that the difficulty of coming up with any message having a given
message digest is on the order of 2128 operations. The MD5 algorithm
has been carefully scrutinized for weaknesses. It is, however, a
relatively new algorithm and further security analysis is of course
justified, as is the case with any new proposal of this sort. |
|
|
| |
Totalement inutile, donc completement indispensable 
|
gege38
- Ancien Modérateur -
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 114 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 17 février 2005 - 20 h 44 m 05 s |
|
|
Tu n'as pas compris quoi exactement ?
Parce que c'est assez clair quand meme pour un RFC..
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 577 Inscrit le 11/01/02
Ville : Lyon
Non connecté
|
|
Posté le 17 février 2005 - 20 h 48 m 13 s |
|
|
The message is "padded" (extended) so that its length (in bits) is
congruent to 448, modulo 512. That is, the message is extended so
that it is just 64 bits shy of being a multiple of 512 bits long.
Padding is always performed, even if the length of the message is
already congruent to 448, modulo 512.
J'arrive pas du tout a traduire ce passage, mon anglais est vraiment pas assez bon.
"Congruent" ca veut dire quoi? Il me semble bien l'avoir deja croisé ce terme en math il me semble, et un copain m'a dit aussi l'avoir vu en chimie (element qui se melangent ou non ou un truc du genre) mais en informatique jamais.
En fait, je ne comprend pas tout a fait cette partie. Je comprend que la longueur en bits du "message" est etendue, mais "congruent to 448, modulo 512" ???
Ca veut dire que la longueur du message modulo 512 doit faire 448?
|
|
| |
Totalement inutile, donc completement indispensable 
|
FiFouille
Messages : 259 Inscrit le 29/10/04
Non connecté
|
|
Posté le 17 février 2005 - 20 h 49 m 34 s |
|
|
http://fr.wikipedia.org/wiki/MD5
Paddingb :
Le message, complété d'un bit supplémentaire obligatoire valant 1, doit avoir une taille en bits Tb telle que Tb = 448 modulo 512.
Si ça n'est pas le cas, on effectue un padding, en ajoutant autant de bits valant 0 que nécessaire. Dans le pire des cas, on ajoutera 512 bits au message, c'est-à-dire le bit obligatoire valant 1, suivi de 511 bits nuls.
|
|
| |
|
gege38
- Ancien Modérateur -
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 114 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 17 février 2005 - 20 h 52 m 57 s |
|
|
Là, c'est des maths...
En fait, il s'agit de "bourrer" le message jusqu'à ce que sa taille - 448 soit un multiple de 512 (si mes souvenirs sont justes  )
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 577 Inscrit le 11/01/02
Ville : Lyon
Non connecté
|
|
Posté le 17 février 2005 - 20 h 53 m 33 s |
|
|
Pourquoi ils se font chier a dire 448%512 plutot que 448? OU alors je comprend vraiment pas!
PS : la traduction de la RFC serait mieux que la recherche sur internet!
Je n'aurais pas wikipedia pour m'aider demain!
|
|
| |
Totalement inutile, donc completement indispensable 
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 577 Inscrit le 11/01/02
Ville : Lyon
Non connecté
|
|
|
| |
Totalement inutile, donc completement indispensable 
|
gege38
- Ancien Modérateur -
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 114 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 17 février 2005 - 20 h 56 m 59 s |
|
|
Au fait, tu as compris pourquoi 448 par rapport à 512 maintenant que je t'ai expliqué les congruences ?
Je te laisse y réflechir, ca peut être une question d'exam  (d'ailleurs la réponse est dans la partie de texte que tu m'as donnée)
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 577 Inscrit le 11/01/02
Ville : Lyon
Non connecté
|
|
Posté le 17 février 2005 - 21 h 01 m 38 s |
|
|
bah la question de l'exam, c'est juste de recoder md5 
Et dire que c'est presque la question la plus facile de l'exam! 
Bon sinon en fait , non j'ai pas compris pourquoi ils veulent faire ca!
|
|
| |
Totalement inutile, donc completement indispensable 
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 577 Inscrit le 11/01/02
Ville : Lyon
Non connecté
|
|
Posté le 17 février 2005 - 21 h 08 m 29 s |
|
|
Ah ca y est j'ai compris! En lisant le paragraphe 3.2 
En fait, la longueur du message % 512 doit faire 448. Comme ca apres on peut rajouter 64 bits afin d'arriver exactement a 512!
Ok ok ok ok!
Bon ben je suis un boulet!  Désolé!!!
|
|
| |
Totalement inutile, donc completement indispensable 
|
iraysyvalo
-
Messages : 9 647 Inscrit le 19/11/02
Ville : Lyon
Non connecté
|
|
Posté le 18 février 2005 - 09 h 22 m 33 s |
|
|
Le passage donne par FiFouille du Wikipedia est tres clair aussi et ca aurait du te suffire .. au lieu de demander coute que coute une traduction
|
|
| |
Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.
|
gege38
- Ancien Modérateur -
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 114 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 18 février 2005 - 10 h 51 m 14 s |
|
|
Oué mais s'il ne se souvient plus de ce que sont les congruences (et les modulos)
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
iraysyvalo
-
Messages : 9 647 Inscrit le 19/11/02
Ville : Lyon
Non connecté
|
|
Posté le 18 février 2005 - 11 h 20 m 57 s |
|
|
Ok, mais une traduction de la RFC ne donne pas non plus une explication de ce qu'est une congruence ..
Mais effectivement, tu as donne cette explication
|
|
| |
Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 577 Inscrit le 11/01/02
Ville : Lyon
Non connecté
|
|
Posté le 18 février 2005 - 13 h 19 m 41 s |
|
|
Bon ben au final c'est bien ce qu'on a eu.
J'avais bien compris le sujet, j'avais tres bien compris la RFC (je pense).
Seul probleme, j'ai pas ete foutu de coder correctement et au final, j'ai pas su le faire 
Faut vraiment que je revise les bases, les pointeurs, ... 
Le fait de ne pas avoir le droit a malloc m'a un peu emmerde!
|
|
| |
Totalement inutile, donc completement indispensable 
|
The Temporer
PHP forEver and Ever !
Messages : 840 Inscrit le 11/02/03
Ville : Lyon
Non connecté
|
|
Posté le 18 février 2005 - 13 h 53 m 47 s |
|
|
Arf!
sans Malloc, mais ou va t-on je vous le demande?
A part emmerder lé ch'ti apprenti informaticien comme nous
|
|
| |
Message édité 1 fois, la dernière par The Temporer le 18 février 2005 - 13 h 54. |
| |
Jusqu'a présent, il y a un combat entre les programmeurs qui essaye de faire des programmes de plus en plus simple et de plus en plus souple pour les utilisateurs ET l'Univers qui produit des cons de plus en plus cons...jusque la c'est L'Univers qui gagne
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 577 Inscrit le 11/01/02
Ville : Lyon
Non connecté
|
|
Posté le 18 février 2005 - 14 h 16 m 27 s |
|
|
Bah j'aurais pu le recoder, mais on avais pas le droit a brk et sbrk
|
|
| |
Totalement inutile, donc completement indispensable 
|
DeVice
Boulet occasionel...
Messages : 3 022 Inscrit le 12/03/03
Ville : Grenoble
Non connecté
|
|
Posté le 18 février 2005 - 14 h 31 m 39 s |
|
|
Ca doit vouloir dire que tu peux te "demmerder" avec des buffers de taille fixe connue à l'avance, je pense ?
|
|
| |
Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"
|
The Temporer
PHP forEver and Ever !
Messages : 840 Inscrit le 11/02/03
Ville : Lyon
Non connecté
|
|
Posté le 18 février 2005 - 14 h 57 m 37 s |
|
|
y'a plutot intérêt....sinon
|
|
| |
Jusqu'a présent, il y a un combat entre les programmeurs qui essaye de faire des programmes de plus en plus simple et de plus en plus souple pour les utilisateurs ET l'Univers qui produit des cons de plus en plus cons...jusque la c'est L'Univers qui gagne
|
Petit_PimoOosE
rsqrtps & pshufb
Messages : 4 617 Inscrit le 15/06/03
Ville : Montréal
Non connecté
|
|
Posté le 18 février 2005 - 15 h 07 m 59 s |
|
|
voyons, Woofy, ne t'inquiète pas : les pointeurs, ça a l'air d'une saloperie, au début, mais après, c'est un plaisir - on ne peut plus s'en passer (rigolez pas, je suis sincère...)
|
|
| |
Huile de fraise.
|
iraysyvalo
-
Messages : 9 647 Inscrit le 19/11/02
Ville : Lyon
Non connecté
|
|
Posté le 18 février 2005 - 16 h 03 m 05 s |
|
|
Des pointeurs sans malloc (et sans la possibilite de recoder cette derniere) .. ca se peut pas ...
Donc la piste DeVice doit etre bonne sinon je me demande comment on peut faire ??
|
|
| |
Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.
|