Skip to content

v0.1-2

Pre-release
Pre-release

Choose a tag to compare

@justas0221 justas0221 released this 30 Sep 17:20
2e52164

Blockchain

Pseudo-kodas

Main funkcija:

Pradžia

Nustatyti įvestį

Kviesti hash_function(input) ⟶ (gauti įvesties eilutės maišos vertę)

Atspausdinti "Maiša: [hash_function rezultatas]"

Pabaiga

Funkcija hash_function(input)

Inicijuoti state[8] ⟶ (inicijuoti būseną pradinėmis konstantomis)

Kviesti padding(input) ⟶ (gauti užpildytą pranešimą)

Ciklas per kiekvieną 64 baitų bloką iš užpildyto pranešimo:

Kviesti process_block(state, block) ⟶ (atnaujinti būseną kiekvienam blokui)

Konvertuoti galutinę state[8] reikšmę į šešioliktainį skaičių

Grąžinti šešioliktainę eilutę kaip galutinį maišos rezultatą

Funkcija initialize(state)

Nustatyti state[0...7] į iš anksto nustatytas konstantas

Grąžinti

Funkcija padding(input)

Apskaičiuoti visą ilgį, reikalingą užpildymui ⟶ (įtraukti 1 bitą + užpildymą + 8 baitus ilgiui)

Paskirti atmintį padded_input

Kopijuoti pradinį input į padded_input

Pridėti 0x80 bitą (1, po kurio eina 7 nuliai) po įvesties

Pridėti nulius, kad ilgis būtų suderintas su 512 bitų daugikliu

Pridėti pradinio input ilgį (bitais) kaip 64 bitų sveikąjį skaičių

Grąžinti padded_input ir padded_length

Funkcija process_block(state, block)

Paruošti pranešimo masyvą W[64]:

Pirmieji 16 žodžių (1 žodis - 4 ASCII simboliai) iš block

Kiti 48 žodžiai gaunami naudojant ankstesnius žodžius

Inicijuoti kintamuosius a, b, c, d, e, f, g, h iš state[0...7]

Ciklas 64 kartus:

Apskaičiuoti S1, ch, temp1, S0, maj, temp2

Atnaujinti a, b, c, d, e, f, g, h

Atnaujinti state[0...7] su a, b, c, d, e, f, g, h

Grąžinti