Download - საქართველოს ტექნიკური უნივერსიტეტი

Transcript
Page 1: საქართველოს ტექნიკური უნივერსიტეტი

საქართველოს ტექნიკური უნივერსიტეტი

Georgian Technical University

ტექსტების შიფრაციის მატრიცული და პოლიბიას მეთოდების პროგრამული უზრუნველყოფა

გიორგი ლობჟანიძე

Page 2: საქართველოს ტექნიკური უნივერსიტეტი

მატრიცული მეთოდი და მისი არსი :დასაშიფრი ტექსტი

შეტევა განახორციელეთ მარცხენა ფლანგიდან

გამოითვლება მატრიცის ოპტიმალური განზომილებები

( M * N ) >= ტექსტში ასოების რაოდენობა

( )მიმდინარეობს ტექსტის მატრიცაში შეტანა სტრიქონულად

შ ე ტ ე ვ ა

გ ა ნ ა ხ

ო რ ც ი ე ლ

ე თ მ ა რ

ც ხ ე ნ ა

ფ ლ ა ნ გ ი

დ ა ნ * * *

ამ კონკრეტულ შემთხვევაში მატრიცის

განზომილებებია

M = 7 და N = 6

ტექსტში ასოების რაოდენობის შესაბამისად

Page 3: საქართველოს ტექნიკური უნივერსიტეტი

( )მიმდინარეობს ტექსტის მატრიციდან გამოტანა შვეულად

შ ე ტ ე ვ ა

გ ა ნ ა ხ

ო რ ც ი ე ლ

ე თ მ ა რ

ც ხ ე ნ ა

ფ ლ ა ნ გ ი

დ ა ნ * * *

:დაშიფრული ტექსტი * * შ ოეცფდეგრთხლატაც ეანენიმნნ ვაეააგ ახლრ*ი

Page 4: საქართველოს ტექნიკური უნივერსიტეტი

მეთოდის გაუმჯობესება

: ტექსტის შეტანა სტრიქონების გარკვეული თანმიმდევრობით 7 5 4 6 2 3 1

დ ა ნ * * *

ც ხ ე ნ ა

ფ ლ ა ნ გ ი

ო რ ც ი ე ლ

გ ა ნ ა ხ

ე თ მ ა რ

შ ე ტ ე ვ ა1

2

4

5

7

3

6

Page 5: საქართველოს ტექნიკური უნივერსიტეტი

: ტექსტის გამოტანა სვეტების გარკვეული თანმიმდევრობით 4 6 5 1 3 2

დ ა ნ * * *

ც ხ ე ნ ა

ფ ლ ა ნ გ ი

ო რ ც ი ე ლ

გ ა ნ ა ხ

ე თ მ ა რ

შ ე ტ ე ვ ა

1 234 56

:დაშიფრული ტექსტი* * * ნნინმე ილხრა აგეაავდცფო ეშნეაცატახლრგთე

ტექსტის გასაშიფრი გასაღებების

:რაოდენობა ხდება

M! x N!

ამ კონკრეტულ:შემთხვევაში

7! x 6! = 3628800

Page 6: საქართველოს ტექნიკური უნივერსიტეტი

მატრიცული მეთოდით დაშიფრული ტექსტის გაშიფრვა

შ ე ტ ე ვ ა

გ ა ნ ა ხ

ო რ ც ი ე ლ

ე თ მ ა რ

ც ხ ე ნ ა

ფ ლ ა ნ გ ი

დ ა ნ * * *

* * შ ოეცფდეგრთხლატაც ეანენიმნნ ვაეააგ ახლრ*ი

შ ე ტ ე ვ ა

გ ა ნ ა ხ

ო რ ც ი ე ლ

ე თ მ ა რ

ც ხ ე ნ ა

ფ ლ ა ნ გ ი

დ ა ნ * * *

ტექსტის სვეტებში შეტანა ტექსტის სტრიქონებიდან გამოტანა

: გასაშიფრი ტექსტი

:გაშიფრული ტექსტი შეტევა განახორციელეთ მარცხენა

***ფლანგიდან

Page 7: საქართველოს ტექნიკური უნივერსიტეტი

მატრიცული მეთოდის პროგრამული უზრუნველყოფა

Codestring text; //საწყისი ტექსტი

string codedText; //დაშიფრული ტექსტი

string codedWithKeyText; //მომხმარებლის გასაღებით დაშიფრული ტექსტი

string Coding(); // შიფრაცია

string enCoding(string textOfEncode ,int rows, int cols); // დეშიფრაცია

string codingWithKey(); // შიფრაცია

string enCodingWithKey(string textOfEncode ,int rows, int cols); // დეშიფრაცია

კლასისსახელი

private

ატრიბუტები

public

მეთოდები

კლასის მოდელი

Page 8: საქართველოს ტექნიკური უნივერსიტეტი

coding( ) მეთოდის სტრუქტურა და რეალიზაცია

მატრიცის ოპტიმალური განზომილებების

გამოთვლა

ტექსტის სტრიქონულად შეტანა მატრიცაში

მატრიციდან ტექსტის გამოტანა სვეტებად

დაშიფრული ტექსტისმიღება

while(true){ if(( i * i) >= text.length() ) { m = i; n = i; if( (i * (i-1)) >= text.length() ) { n = (i-1); } break; } i++; }

int index = 0;for(int i = 0; i<m; i++){ for(int j = 0; j<n; j++) { if(index >= text.length()) letters[i][j] = "*"; else letters[i][j] = text.substr(index,1); index++; }}

for(int i=0; i<n; i++){ for(int j=0; j<m; j++) { codedText += letters[j][i]; }}

Page 9: საქართველოს ტექნიკური უნივერსიტეტი

enCoding(string textOfEncode, int row, int col ) მეთოდის სტრუქტურა და რეალიზაცია

მატრიცის განზომილებების აღდგენა გადაცემული

პარამეტრებით

const int m = row;const int n = col;

ტექსტის შეტანა მატრიცაშიშვეულად

for(int i=0, index = 0; i<n; i++){ for(int j=0; j<m; j++) { letters[j][i] = textOfEncode.substr(index,1); index++; }}

for(int i = 0; i<m; i++) { for(int j = 0; j<n; j++) { enCodedText += letters[i][j]; } }

ტექსტის გამოტანა მატრიციდან

სტრიქონულად

საწყისი ტექსტის აღდგენა

Page 10: საქართველოს ტექნიკური უნივერსიტეტი

codingWithKey( ) მეთოდის სტრუქტურა და რეალიზაცია

მატრიცის ოპტიმალური განზომილებების

გამოთვლა

სტრიქონების შეტანის თანმიმდევრობის მიღება

მომხმარებლისგან

ტექსტის შეტანა სტრიქონულად

მომხმარებლის მიერ მითითებული

თანმიმდევრობით

for(int i = 0; i<row; i++){ cout<<"\tRow["<<i<<"] Key: "; cin>>rowKey[i];}

for(int i=0; i<row; i++){ for(int j=0; j<col; j++) { if( index >= text.length() ) letters[rowKey[i]][j] = "*"; else letters[rowKey[i]][j] = text.substr(index,1);

index++; }}

Page 11: საქართველოს ტექნიკური უნივერსიტეტი

სვეტების გამოტანის თანმიმდევრობის მიღება

მომხმარებლისგან

ტექსტის გამოტანა შვეულად მომხმარებლის

მიერ მითითებულითანმიმდევრობით

დაშიფრული ტექსტისმიღება

for(int i=0; i<col; i++){ cout<<"\tCol["<<i<<"] Key: "; cin>>colKey[i];}

for(int i=0; i<col; i++){ for(int j=0; j<row; j++) { codedWithKeyText += letters[j][colKey[i]]; }}

Page 12: საქართველოს ტექნიკური უნივერსიტეტი

enCodingWithKey(string textOfEncode, int row, int col ) მეთოდის სტრუქტურა და რეალიზაცია

მატრიცის განზომილებების აღდგენა გადაცემული

პარამეტრებით

სვეტების შეტანის თანმიმდევრობის მიღება

მომხმარებლისგან

მატრიცის აღდგენა

სტრიქონების გამოტანის თანმიმდევრობის მიღება

მომხმარებლიდან

საწყისი ტექსტის აღდგენა

const int m = row;const int n = col; for(int i=0; i<n; i++)

{ cout<<"\tCol["<<i<<"] Key: "; cin>>colKey[i];}

for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { letters[j][colKey[i]] = textOfEncode.substr(index,1); index++; } }

for(int i=0; i<m; i++){ cout<<"\tRow["<<i<<"] Key: "; cin>>rowKey[i];}

for(int i=0; i<m; i++){ for(int j=0; j<n; j++) { enCodedText += letters[rowKey[i]][j]; }}

Page 13: საქართველოს ტექნიკური უნივერსიტეტი

პოლიბიას მეთოდი და მისი არსი

:დასაშიფრი ტექსტი

მმ ტერი მარცხენა ფლანგზეა

ა ბ გ დ ე ვ

ზ თ ი კ ლ მმ

ნ ო პ ჟ რ ს

ტ უ ფ ქ ღ ყ

შ ჩ ც ძ წ ჭ

ხ ჯ ჰ . ,

ანბანი

ა ბ გ დ ე ვ

შიფრაციის წესი

თითოეული ასო იცვლება მისი თითოეული ასო იცვლება მისიკოორდინატებითკოორდინატებით

მმ ბვბვიცვლება

:დაშიფრული ტექსტი

ბვდააეგებგვდბვააგეეგვააეგააავდდგბეააგააგბააეაა

Page 14: საქართველოს ტექნიკური უნივერსიტეტი

პოლიბიას მეთოდით დაშიფრული ტექსტის დეშიფრაცია

:გასაშიფრი ტექსტი

ბვბვდააეგებგვდბვააგეეგვააეგააავდდგბეააგააგბააეაა

დეშიფრაციის წესი

ბვბვ

ვვბბა ბ გ დ ე ვ

ზ თ ი კ ლ მმ

ნ ო პ ჟ რ ს

ტ უ ფ ქ ღ ყ

შ ჩ ც ძ წ ჭ

ხ ჯ ჰ . ,

ა ბ გ დ ე ვვ

ბბ

მმ

მმ ტერი მარცხენა ფლანგზეა

:გაშიფრული ტექსტი

Page 15: საქართველოს ტექნიკური უნივერსიტეტი

პოლიბიას მეთოდის პროგრამული უზრუნველყოფა

კლასის მოდელი

Codestring text; //საწყისი ტექსტი

string codedText; //დაშიფრული ტექსტი

void polibiaCoding(); // შიფრაცია

string polibiaEnCoding(string textOfEncode); // დეშიფრაცია

კლასისსახელი

private

ატრიბუტები

public

მეთოდები

Page 16: საქართველოს ტექნიკური უნივერსიტეტი

polibiaCoding( ) მეთოდის სტრუქტურა და რეალიზაცია

ანბანის და კოორდინატების აღწერა

სიმბოლოების ძიება ანბანში და მათი ჩანაცვლება შესაბამისი

კოორდინატებით

დაშიფრული ტექსტისმიღება

const string alphabet[6][6] = { {"a","b","g","d","e","v"},{"z","T","i","k","l","m"},{"n","o","p","J","r","s"},{"t","u","f","q","R","y"},{"S","C","c","Z","w","W"},{"x","j","h"," ",".",","}};

const string rowLetters[6] = {"a","b","g","d","e","v"}; const string colLetters[6] = {"a","b","g","d","e","v"};

for(int a=0; a<text.length(); a++){ letter = text.substr(a,1);

for(int i=0; i<6; i++) //find current element { for(int j=0; j<6; j++) { if( letter == alphabet[i][j] ) { temp = rowLetters[i] + colLetters[j]; codedText += temp; } } } }

Page 17: საქართველოს ტექნიკური უნივერსიტეტი

polibiEnCoding( string textOfEncode) მეთოდის სტრუქტურა და რეალიზაცია

ანბანის და კოორდინატების აღწერა

ტექსტიდან ასოების- წყვილ წყვილად ამოჭრა

და მათი ჩანაცვლება ანბანში შესაბამის

კოორდინატებზე მდებარეასოთი

დაშიფრული ტექსტისმიღება

for(int i=0; i<textOfEncode.length()/2; i++) { txt1 = textOfEncode.substr(index,1);

txt2 = textOfEncode.substr((index+1),1); for(int j=0; j<6; j++) { if(txt1 == rowLetters[j]) rowLetter = j; if(txt2 == colLetters[j]) colLetter = j; } enCodedText += alphabet[rowLetter][colLetter];

index+=2;}

Page 18: საქართველოს ტექნიკური უნივერსიტეტი

Top Related