Puncte:-1

Cum să introduceți algoritmul SHA256 (un exemplu folosind Bitcoin Header)?

drapel br

Pentru orice bloc bitcoin combinăm diferite câmpuri Header pentru a crea un șir care este o intrare la un algoritm SHA cu 2 treceri. Hashul rezultat trebuie să se potrivească cu Hash-ul din antetul Bloc pentru ca blocul să fie valid.

Pentru a testa această logică, precum și algoritmul SHA, am folosit antetul blocului numărul 695877 (https://blockchain.info/rawblock/695877?format=json) pentru a crea șirul de intrare 8

Acum, când aplic algoritmul SHA cu 2 treceri, hashul rezultat se potrivește cu hash-ul din Bloc (ignorând partea Endian pentru moment).

Hash calculat: 629ef98d63e12f6b01476419a5a71efa8814dea40aec09000000000000000000

Blocare hash: 00000000000000000009ec0aa4de1488fa1ea7a5196447016b2fe1638df99e62

Dar când am introdus manual antetul înainte de a-l trece la algoritmul SHA cu 2 treceri, după cum urmează: 04008020546c359986812644420e453113e209afeaaeeb316f3a07000000000000000000b8fa13b3fca087c1456daac626ab9b8a47eae821a326f17e0ffffc15433df709b0f718610b1812175a5c9544800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280 Acest lucru are ca rezultat un hash incorect.

Nu reușesc să văd ce este în neregulă în căptușeală. Poate cineva să-l sublinieze, vă rog?

J.Doe avatar
drapel br
Nu ți-am primit întrebarea.Adăugăm mesajul astfel încât (lungimea mesajului în număr de biți)%512=0 pe măsură ce procesăm bucăți de 512 biți.
A. Hersean avatar
drapel cr
Ați confirmat că șirul de intrare original produce hash-ul corect. Apoi ați adăugat „800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000. Acest lucru va schimba hash-ul șirului. Asta ar trebui să facă hashingul. Deci, de ce vrei să pad, când mesajul necăptusit produce rezultatul dorit?
fgrieu avatar
drapel ng
Reformând comentariul de mai sus în mod diferit: umplutura unui hash face parte din hashing și nu trebuie făcută extern.
J.Doe avatar
drapel br
Încerc să implementez SHA de la zero (doar pentru a vedea dacă înțeleg corect).Există o interogare ulterioară: dacă folosesc antetul de mai sus (fără pad) și îl dau unui algo pentru 2 treceri, dă rezultate corecte dacă datele sunt specificate ca „HEX”, dar nu reușesc pentru „TEXT”. Ce fel de preprocesare se face pentru a converti datele „HEX” în „TEXT” înainte de a rula algoritmul SHA? Majoritatea pseudocodului SHA pe care îl văd presupune că datele sunt așa cum sunt, adică formatul „TEXT”. Aș fi grozav dacă ați putea explica folosind antetul actual de mai sus? Acesta este instrumentul [https://emn178.github.io/online-tools/sha256.html]
fgrieu avatar
drapel ng
Vă sugerez să închideți această întrebare deoarece problema inițială este rezolvată; și că înainte de a pune o nouă întrebare despre umplutura SHA-256, citiți mai întâi răspunsurile la [alte întrebări despre umplutura SHA-256](https://crypto.stackexchange.com/questions/tagged/padding%2bsha-256?tab=Votes ), poate începând cu [this](https://crypto.stackexchange.com/a/9370/555) și [that](https://crypto.stackexchange.com/a/79735/555). De asemenea, citiți frumosul [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf) care conține tot ce este necesar.
Puncte:-3
drapel vn

Asigurați-vă că dimensiunea criptării din bloc este aceeași cu dimensiunea pe care o comparați. Astfel de probleme pot apărea atunci când dimensiunile blocurilor sunt inconsecvente.

fgrieu avatar
drapel ng
Nu este implicată nicio criptare: hashingul nu este criptare. În plus, problema este un nivel suplimentar de umplutură, mai degrabă decât o problemă de dimensiune.

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.