Încerc să înțeleg algoritmul SHA2 - 512, așa că sunt în urma acestui document care are valorile intermediare pentru șirul „abc”. La t=0
, valorile pentru f
, h
și g
sunt simple. Dar nu primesc aceeași valoare pentru e
, ceea ce sugerează că fac ceva greșit când calculez $T_1 = h + \Sigma_1(e) + \text{Ch}(e,f,g) + K_i + W_i$. Sunt aproape sigur că am implementat $\text{Ch( )}$ și $\Sigma_1 ( )$ corect. Cred că problema mea ar putea fi cu adăugarea terminată $\pmod {2^{64}}$. Înțeleg fiecare termen în rezumat al $T_1$ este un număr de 64 de biți. Deci presupun că putem converti aceste numere în numere întregi și le putem aduna $\pmod {2^{64}}$. Acum este posibil ca numărul rezultat să nu aibă o lungime de 64 de biți în binar. Adăugăm $0$este în fața și în spatele reprezentării binare pentru a o face pe 64 de biți?
Nu sunt sigur dacă acest lucru este util, dar iată câteva valori pentru care primesc în binar t=0
(deocamdată adaug zerouri la stânga celui mai semnificativ bit):
#Sigma_1(e)
010100010000111001010010011111110101101111001101000001011010001
#Ch(e,f,g)
0001111110000101110010011000110001111011001001110011110100111011
#T_1
0110100101100101001100111001100011001110110101111110100010100000
#e <- T_1 + d
000011101011010100101000110100110010110111101010001111110010001
întrucât conform documentului, e
în binar este 1100001111010100111010111111110101001000011001010000111111111010
.
Dacă puteți furniza o resursă care să includă valorile intermediare pentru aceste alte funcții, sper că o pot da seama. În caz contrar, ar fi foarte apreciat dacă ați putea oferi o explicație detaliată despre cum să obțineți valoarea corectă. Vă rog să-mi spuneți dacă doriți să includ mai multe informații.