Puncte:1

Înțelegerea valorilor intermediare - SHA2 - 512

drapel fr

Î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.

poncho avatar
drapel my
Vrei să spui SHA3-512 sau SHA2-512 (cunoscut și ca SHA512)? Documentul pe care l-ați citat și detaliile întrebării dvs. sunt pentru SHA2-512.
Josh avatar
drapel fr
Mulțumesc că ai subliniat asta. Am presupus că SHA-512 înseamnă SHA3-512, așa că m-am înșelat în privința asta. Voi edita intrebarea.
Puncte:2
drapel my

Presupunând că vă referiți cu adevărat la SHA2-512:

#Sigma_1(e) 010100010000111001010010011111110101101111001101000001011010001

Valoarea lui „Sigma_1” este incorectă; Tocmai am instrumentat o implementare cunoscută și am primit pentru prima rundă:

$$sigma1 = 9427e33bb5c9dbca$$

Poate ai avut $ROTR$ operațiuni ca schimburi, nu rotații...

Acum, în ceea ce privește gândurile tale:

Înțeleg fiecare termen în rezumat al $T1$ 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.

De fapt, cel mai natural mod de a reprezenta valori în SHA-512 ar fi, ca întotdeauna, folosirea a 64 de biți; acești biți sunt interpretați ca o valoare în interval $[0, 2^{64}-1]$; adesea, se poate întâmpla ca msbit să fie zero; o tratăm în continuare ca pe o valoare de 64 de biți (și deci nu trebuie să adăugăm niciodată 0 la început sau la sfârșit - valorile au întotdeauna lungimea corectă).

Da, nu acesta este modul în care numărăm biții în RSA - SHA-512 nu este RSA.

Josh avatar
drapel fr
Dacă nu mă înșel, `d` în hex este `A54FF53A5F1D36F1`, care în binar este `10100101010011111110101001110100101111100011101001110101. Deci cei 4 lsbiți sunt `0001`. Celălalt punct este că însumarea nu este XOR. Conform descrierii, este peste `mod 2^64`.
poncho avatar
drapel my
Am citit greșit vectorul de testare; ai dreptate in valoarea initiala de $d$; valoarea lui $T1$ este greșită (și BTW, sunt destul de conștient că adăugarea este $\bmod 2^{64}$...)
Josh avatar
drapel fr
Vă mulțumim că ați calculat sigma_1. Acum primesc aceeași valoare. Problema a fost când am convertit hex în int în binar în Python, am primit doar atât de mulți biți necesari pentru acea valoare întreagă, nu neapărat 64 de biți. Am adăugat 0 la stânga reprezentării binare și funcționează bine chiar acum!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.