Laboratoriniai darbai

MD5 algoritmas

10   (2 atsiliepimai)
MD5 algoritmas 1 puslapis
MD5 algoritmas 2 puslapis
MD5 algoritmas 3 puslapis
MD5 algoritmas 4 puslapis
MD5 algoritmas 5 puslapis
MD5 algoritmas 6 puslapis
www.nemoku.lt
www.nemoku.lt
Aukščiau pateiktos peržiūros nuotraukos yra sumažintos kokybės. Norėdami matyti visą darbą, spustelkite peržiūrėti darbą.
Ištrauka

Kauno Technologijos Universitetas Programinės Įrangos Katedra MD5 algoritmas (laboratorinis darbas Nr.5) Atliko: Priėmė: KAUNAS 1999 Užduotis Realizuoti MD5 santraukos generavimo algoritmą. Realizuoti paprastą XOR santraukos generavimo algoritmą ir pademonstruoti kaip galima pakeisti žinutę, taip kad santrauka nepakistų. Darbo eiga MD5 šifravimo algoritmas gerai žinomas ir aiškiai specifikuotas, todėl jo čia neaptarinėsime. Tik pateiksime programą, realizuojančią MD5 santraukos generavimo algoritmą. Taip pat pateikiame XOR santraukos generavimo algiritmą ir programą, padirbinėjančią parašus, t.y. jei turime kažkokios žinutės XOR parašą, tai ši programa prie pateikktos skirtingos žinutės prideda tius simbolius, kad žinutė turėtų identišką parašą. Programos kodas MD5 algoritmas: #include #include #include #include void error(char* msg) { printf("error:%s\n", msg); exit(1); } typedef unsigned __int64 u64; typedef unsigned int u32; typedef unsigned char u8; typedef struct { u32 A,B,C,D; u64 msglen; } md5state; const md5state md5inistate = {0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0}; typedef u8 md5block[64]; u8 rot[4][4] = { {7, 12, 17, 22}, {5, 9, 14, 20}, {4, 11, 16 , 23}, {6, 10, 15, 21} };//rotation constants u8 pick[4][2] = { {0, 1}, {1, 5}, {5, 3}, {0, 7} };//rotation constants typedef u32 (*func)(u32, u32, u32); u32 f(u32 b, u32 c, u32 d) { return (b & c) | ((~b) & d); } u32 g(u32 b, u32 c, u32 d) { return (b & d) | (c & (~d)); } u32 h(u32 b, u32 c, u32 d) { return b ^ (c ^ d); } u32 i(u32 b, u32 c, u32 d) { return c ^ (b | (~d)); } func md5func[4] = { f, g, h, i}; u32 Rotate(u32 data, u8 s) { return (data > (32 - s)); } void MD5Func(u32* a, u32 b, u32 c, u32 d, u32 x, u8 s, u32 t, func f) { *a += f(b, c, d) + t + x; *a = Rotate(*a, s) + b; } u32 GetData(u8* data) { // return (data[0] A; b = state->B; c = state->C; d = state->D; u8 start; u8 step; for (u8 i = 0; i A += a; state->B += b; state->C += c; state->D += d; } void MD5Step(md5block data, md5state* state) { state->msglen += 512; MD5Block(data, state); } void MD5End(md5block data, int len, md5state* state) { state->msglen += len; u64 templen = state->msglen; if (len > 512) error("length out of range"); int sz = 64; if (len >= 448) //56 bytes sz += 64; (data[len/8] &= 0xff00 >> len%8) |= 0x80 >> len%8; memset(data + len/8 + 1, 0, sz - len/8 - 9); //eight bytes - size; for(int i = sz - 8; i >=8; } MD5Block(data, state); if (sz > 64) MD5Block(data + 64, state); } const int datasz = 777; void PrintMD5(md5state* state) { printf("%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", state->A & 0xff, (state->A >> 8) & 0xff, (state->A >> 16) & 0xff, state->A >> 24, state->B & 0xff, (state->B >> 8) & 0xff, (state->B >> 16) & 0xff, state->B >> 24, state->C & 0xff, (state->C >> 8) & 0xff, (state->C >> 16) & 0xff, state->C >> 24, state->D & 0xff, (state->D >> 8) & 0xff, (state->D >> 16) & 0xff, state->D >> 24 ); } void ReadMD5(FILE* f, md5state* state) { if (fread(&state->A, 1, 16, f) != 16) error("failed reading file"); } void WriteMD5(FILE* f, md5state* state) { if (fwrite(&state->A, 1, 16, f) != 16) error("failed writing file"); } int CompareMD5(md5state* s1, md5state* s2) { return (s1->A == s2->A) && (s1->B == s2->B) && (s1->C == s2->C) && (s1->D == s2->D); } void main(int argc, char* argv[]) { if(sizeof(u64) != 8) error("u64 is not 64 bits!"); if(sizeof(u32) != 4) error("u32 is not 32 bits!"); if (argc

Daugiau informacijos...

Šį darbą sudaro 1000 žodžiai, tikrai rasi tai, ko ieškai!

★ Klientai rekomenduoja


Šį rašto darbą rekomenduoja mūsų klientai. Ką tai reiškia?

Mūsų svetainėje pateikiama dešimtys tūkstančių skirtingų rašto darbų, kuriuos įkėlė daugybė moksleivių ir studentų su skirtingais gabumais. Būtent šis rašto darbas yra patikrintas specialistų ir rekomenduojamas kitų klientų, kurie po atsisiuntimo įvertino šį mokslo darbą teigiamai. Todėl galite būti tikri, kad šis pasirinkimas geriausias!

Detali informacija
Darbo tipas
Failo tipas
Word failas (.doc)
Apimtis
7 psl., (1000 ž.)
Darbo duomenys
  • Programavimo laboratorinis darbas
  • 7 psl., (1000 ž.)
  • Word failas 55 KB
www.nemoku.lt Atsisiųsti šį laboratorinį darbą

www.nemoku.lt Panašūs darbai

Privalumai
Pakeitimo garantija Darbo pakeitimo garantija

Atsisiuntei rašto darbą ir neradai jame reikalingos informacijos? Pakeisime jį kitu nemokamai.

Sutaupyk 25% pirkdamas daugiau Gauk 25% nuolaidą

Pirkdamas daugiau nei vieną darbą, nuo sekančių darbų gausi 25% nuolaidą.

Greitas aptarnavimas Greitas aptarnavimas

Išsirink norimus rašto darbus ir gauk juos akimirksniu po sėkmingo apmokėjimo!

Atsiliepimai
www.nemoku.lt
Dainius Studentas
Naudojuosi nuo pirmo kurso ir visad randu tai, ko reikia. O ypač smagu, kad įdėjęs darbą gaunu bet kurį nemokamai. Geras puslapis.
www.nemoku.lt
Aurimas Studentas
Puiki svetainė, refleksija pilnai pateisino visus lūkesčius.
www.nemoku.lt
Greta Moksleivė
Pirkau rašto darbą, viskas gerai.
www.nemoku.lt
Skaistė Studentė
Užmačiau šią svetainę kursiokės kompiuteryje. :D Ką galiu pasakyti, iš kitur ir nebesisiunčiu, kai čia yra viskas ko reikia.
Palaukite! Šį darbą galite atsisiųsti visiškai NEMOKAMAI! Įkelkite bet kokį savo turimą mokslo darbą ir už kiekvieną įkeltą darbą būsite apdovanoti - gausite dovanų kodus, skirtus nemokamai parsisiųsti jums reikalingus rašto darbus.
Vilkti dokumentus čia:

.doc, .docx, .pdf, .ppt, .pptx, .odt