Pdf-xchange 0 Examples


Download 6.97 Mb.
Pdf ko'rish
bet13/242
Sana03.12.2023
Hajmi6.97 Mb.
#1798925
1   ...   9   10   11   12   13   14   15   16   ...   242
Bog'liq
konf02

void encode (const char* in, char* out) 

int bits = 0; int i = strlen(in), k = 0;
while ( i-- ) // i = 0 bo’lguncha davom etadi. 

bits <<= 8; // bits dagi bitlarni chapga 8 ta suramiz 
bits |= int(in[i]) ; // bits ga in satrdagi i-elementni bitlarini 
qoshamiz. 
out [ k++ ] = TABLE [ bits & 0x3F ]; // bits & 0x3F 6 bit ajratib 
olish degani
bits >>= 6; // bits dagi bitlarni 6 ta onga surish, qoldiq bitni olish 
if( bits >= 64) // agar bits dagi qoldiq bitlar soni 6 kop yoki teng 
bo’lsa 
// yana bir bor 6 bit ajratib out o’zgaruvchiga qo’shamiz 
out [ k++ ] = TABLE [ bits & 0x3F ]; 
bits >>= 6; 


if (bits != 0) // bitlar soni 0 farqli bo’lsa u holda yana 6 bit 
out [ k++ ] = TABLE [ bits & 0x3F ]; // ajratib natija satr 
qo’shamiz 
out[ k ] = '\0'; // bu satr tugatilganligi belgisi 

Bu funksiyaga ikkita argument kiritish kerak. 
in o’zgaruvchisi shifrlash kerak bo’lgan matn (bizi misolimiz bu “Salom” 
ga teng). 
out o’zgaruvchisi natija ya’ni shifrlangan matn (bu “tvshVTF” ga teng 
bo’ladi). 
out argumentga o’zgaruvchi bog’laganda out belgilar massivi uzunligi in 
belgilar massividan 4/3 marta ko’p bo’lishi kerak. “Salom” so’zida 5 belgi bor, 
demak natijamizda (4*5)/3 = 7(butun qismi) ta belgi bor bo’lishi kerak, 
“tvsgVTF” da 7 ta belgi bor, demak shifrlanga satr uzunligi oddiy satrda 4/3 
marta ko’p bo’ladi. 


22 
Base64 asosda shifrlangan matn asl holatiga qaytarish ketma-ketlikni 
ko’rib chiqsak , bunga oldin shifrlagan “tvshVTF” olsak: 
Shifrlangan matndagi belgilarni ongdan chapga qarab birma-bir olamiz
“tvshVTF” da oxirgi belgi F ga teng; 
Endi shu F belgiga TABLE shifr alfavitida mos keladigan indeksini 
topamiz, bunda indeks = 5 ga; 
Bu indeks bitlarini yig’amiz ya’ni “101”
Agar bitlar soni 8 dan kichik bo’lsa keyindi interatsiyaga otamiz
Keyingi belgini olamiz bu T, TABLE shifr alfavitida mos keladigan 
indeksini topamiz, bunda indeks = 19 ga teng; 
Bu indeks bitlarini oldingisiga ong tarafdan qo’shamiz ya’ni “101010011”
Agar bitlar soni 8 dan kichik bo’lsa keyindi interatsiyaga otamiz; 
To’plangan bitlarni ong tarafdan 8 bitini ajratib qolamiz, “01010011” va 

Download 6.97 Mb.

Do'stlaringiz bilan baham:
1   ...   9   10   11   12   13   14   15   16   ...   242




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling