Vijner shifrlash usuli. Polialfavit almashtirish usullari
Download 146.02 Kb.
|
vijiner shifrlash c
- Bu sahifa navigatsiya:
- Vijiner jadvali (matritsasi)
- 1-qadam.
- Vijiner shifrlash usuli c++ kodi
Vijner shifrlash usuli. Polialfavit almashtirish usullari aytarlicha yuqori kriptobardoshlikka ega.Bu usullar dastlabki matn simvollarini almashtirish uchun bir necha alfavitdan foydalanishga asoslangan.Rasman polialfavitli almashtirishni quyidagicha tasavvur etish mumkin.N-alfavitli almashtirishda dastlabki A0 alfavitdagi S01 simvoli A1 alfavitdagi S11 simvoli bilan almashtirishdagi va hakazo S0N ni SNN simvol bilan almashtirilganidan so`ng S0(N+1) simvolining o’rnini A1 alfavitdagi S1(N+1) simvol oladi va hokazo. Polialfavitli almashtirish algoritmlari ichida Vijiner jadvali (matritsasi) TB ni ishlatuvchi algoritm eng keng tarqalgan.Vijiner jadval[R x R] o’lchamli kvadrat matritsadan iborat bo’lib,(R-ishlatilayotgan alfavitdagi simvollar soni) birinchi qatorida simvollar alfavit tartibida joylashtiriladi.Ikkinchi qatordan boshlab simvollar chapga bitta o’ringa siljitilgan holda yoziladi.Siqib chiqarilgan simvollar o’ng tarafdagi bo’shagan o’rinni to’ldiradi (siklik siljitish).Agar o’zbek alfaviti ishlatilsa ,Vijiner matrisasi [36x36] o’lchamga ega bo’ladi. Shifrlash takrorlanmaydigan M simvoldan iborat kalit yordamida amalga oshiriladi.Vijinerning to’liq matritsadan [(M+1),R] o’lchamli shifrlash matritsasi TSh ajratiladi.Bu matritsa birinchi qatordan va birinchi elementlari kalit simvollariga mos keluvchi qatorlardan iborat bo’ladi. ABDEF...............................ShChNg_ BDEF................................ShChNg_A DEFG................................ChNgAB ……..… …..…… ………… ABD...............................G‘ShChNg Vijiner matritsasi Agar kalit sifatida “GO’ZA” kaliti uchun shifrlash matritsasi. Vijiner jadvali yordamida shifrlash algoritmi quyidagi qadamlar ketma-ketligidan iborat. 1-qadam.Uzunligi M simvolli kalit K ni tanlash. 2-qadam.Tanlangan kalit K uchun [(M+1),R] o’lchamli shifrlash matritsasi Tsh =(bij) ni qurish. 3-qadam. Dastlabki matnning har bir simvoli s0r tagiga kalit simvoli km joylashtiriladi.Kalit keragicha takrorlanadi. 4-qadam.Dastlabki matn simvollari shifrlash matritsasi Tsh dan quyidagi qoida bo’yicha tanlangan simvollar bilan ketma-ket almashtiriladi: 1)K kalitning alamshtiriluvchi s0r simvoliga mos km simvoli aniqlanadi; 2)Shifrlash matritsasi Tsh dagi km=bj1 shart bajariluvchi i qator topiladi; 3)s0r=bi1 shart bajariluvchi j ustun aniqlanadi; 4) s0r simvoli bij simvoli bilan almashtiriladi. 5-qadam. Shifrlangan ketma-ketlik ma’lum uzunlikdagi (masalan,4 simvolli) bloklarga ajratiladi.Oxirgi blokning bo’sh joylari maxsus simvol-to’ldiruvchilar bilan to’ldiriladi. Rasshifrovka qilish quyidagi ketma-ketlikda amalga oshiriladi. 1-qadam.Shifrlash algoritmining 3-qadamidagidek shifrmatn tagiga kalit simvollari ketma-ketligi yoziladi. 2-qadam.Shifrmatndan s1r simvollari va mos kalit simvollari km ketma-ket tanlanadi.Tsh matritsada km=bij shartni qanoatlantiruvchi i qator aniqlanadi.i–qatorda bij= s1r elemaenti aniqlanadi.Rasshifrovka qilingan matnda r=o’rindagi bij simvoli joylashtiriladi. 3-qadam.Rasshifrovka qilingan matn ajratilmasdan yoziladi.Xizmatchi simvollar olib tashlanadi. Misol.K= dastlabki matnni shifrlash va rasshivrovka qilish talab etilsin.Shifrlash va rasshivrovka qilish mexanizmi quyidagicha: Dastlabki matn PAXTA_G’ARAMI Kalit G’O’ZA G’O’ZA G’O’ZA Almashtirilgan so’nggi matn KO’NTG’ZTALO’FI Shifr matn KO’NTG’ZTALO’FI Kalit G’O’ZA G’O’ZA G’O’ZA Rasshifrovka qilingan matn PAXTA G’ARAMI Dastlabki matn PAXTA_G’ARAMI Vijiner shifrlash usuli c++ kodi #include #include using namespace std; const int wordLength = 81; void encodeText(char text[wordLength], char key[wordLength]){ int textLen = strlen(text); int keyLen = strlen(key); int i, j char newKey[textLen]; char encryptedText[textLen] for(i = 0, j = 0; i < textLen; ++i, ++j){ if(j == keyLen){ j = 0; } newKey[i] = key[j] } newKey[i] = '\0'; for(i = 0; i < textLen; i++){ if (text[i] != ' '){ encryptedText[i] = ((text[i] + newKey[i]) % 26); encryptedText[i] += 'a';} else{ encryptedText[i] = ' ';}} encryptedText[i] = '\0'; cout << newKey << endl; cout << text << endl; cout << encryptedText << endl;} int main(){ cout << "Matnni kriting : "; char textToEncode[wordLength]; cin.getline(textToEncode, wordLength); cout << "Kalitni kiriting: "; char keyword[wordLength]; cin.getline(keyword,wordLength ); cout << "Shifrlangan matn : \n"; encodeText(textToEncode, keyword); return 0;} Download 146.02 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling