MD5: Różnice pomiędzy wersjami

[wersja przejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
→‎Kod źródłowy: merytoryczna: rzutowanie nie jest potrzebne; typedef to nie makro i też nie jest potrzebny
→‎Kod źródłowy: merytoryczne: nazwy zmiennych bardziej intuicyjne, poprawiony błąd (argumenty FF, GG, HH, II)
Linia 87:
Kod na podstawie RFC 1321 (RSA Data Security, Inc.).
 
W poniższym kodzie <tt>h0</tt>, <tt>h1</tt>, <tt>h2</tt>, <tt>h3</tt> oznaczają tymczasowe wartości funkcji skrótu, natomiast <tt>a</tt>, <tt>b</tt>, <tt>c</tt> i <tt>d</tt> oznaczają rejestry stanuw czasie przetwarzania pojedynczego bloku.
 
Inicjowanie:
<source lang="c">
ah0 = 0x67452301;
bh1 = 0xefcdab89;
ch2 = 0x98badcfe;
dh3 = 0x10325476;
</source>
 
Linia 148:
Transformacja bloku (<tt>x[i]</tt> to kolejne 32-bitowe fragmenty aktualnego bloku, w porządku [[Kolejność bajtów|little endian]]):
<source lang="c">
aaa = ah0;
bbb = bh1;
ccc = ch2;
ddd = dh3;
 
/* Cykl 1 */
Linia 225:
II(b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
 
ah0 += aaa;
bh1 += bbb;
ch2 += ccc;
dh3 += ddd;
</source>
 
Wynik to wartości kolejnych rejestrów w porządku [[Kolejność bajtów|little endian]]:
<source lang="c">
printf("%08X%08X%08X%08X", ah0, bh1, ch2, dh3);
</source>