Vijner shifrlash usuli. Polialfavit almashtirish usullari



Yüklə 27,33 Kb.
tarix14.12.2023
ölçüsü27,33 Kb.
#176781
vijiner shifrlash c


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 so’zi tanlangan bo’lsa, shifrlash matritsasi beshta qatordan iborat bo’ladi.





“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= kaliti yordamida T=
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;}



Yüklə 27,33 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin