საქართველოს ტექნიკური უნივერსიტეტი
DESCRIPTION
საქართველოს ტექნიკური უნივერსიტეტი. ტექსტების შიფრაციის მატრიცული და პოლიბიას მეთოდების პროგრამული უზრუნველყოფა. Georgian Technical University. გიორგი ლობჟანიძე. მატრიცული მეთოდი და მისი არსი. დასაშიფრი ტექსტი:. შეტევა განახორციელეთ მარცხენა ფლანგიდან. - PowerPoint PPT PresentationTRANSCRIPT
საქართველოს ტექნიკური უნივერსიტეტი
Georgian Technical University
ტექსტების შიფრაციის მატრიცული და პოლიბიას მეთოდების პროგრამული უზრუნველყოფა
გიორგი ლობჟანიძე
მატრიცული მეთოდი და მისი არსი :დასაშიფრი ტექსტი
შეტევა განახორციელეთ მარცხენა ფლანგიდან
გამოითვლება მატრიცის ოპტიმალური განზომილებები
( M * N ) >= ტექსტში ასოების რაოდენობა
( )მიმდინარეობს ტექსტის მატრიცაში შეტანა სტრიქონულად
შ ე ტ ე ვ ა
გ ა ნ ა ხ
ო რ ც ი ე ლ
ე თ მ ა რ
ც ხ ე ნ ა
ფ ლ ა ნ გ ი
დ ა ნ * * *
ამ კონკრეტულ შემთხვევაში მატრიცის
განზომილებებია
M = 7 და N = 6
ტექსტში ასოების რაოდენობის შესაბამისად
( )მიმდინარეობს ტექსტის მატრიციდან გამოტანა შვეულად
შ ე ტ ე ვ ა
გ ა ნ ა ხ
ო რ ც ი ე ლ
ე თ მ ა რ
ც ხ ე ნ ა
ფ ლ ა ნ გ ი
დ ა ნ * * *
:დაშიფრული ტექსტი * * შ ოეცფდეგრთხლატაც ეანენიმნნ ვაეააგ ახლრ*ი
მეთოდის გაუმჯობესება
: ტექსტის შეტანა სტრიქონების გარკვეული თანმიმდევრობით 7 5 4 6 2 3 1
დ ა ნ * * *
ც ხ ე ნ ა
ფ ლ ა ნ გ ი
ო რ ც ი ე ლ
გ ა ნ ა ხ
ე თ მ ა რ
შ ე ტ ე ვ ა1
2
4
5
7
3
6
: ტექსტის გამოტანა სვეტების გარკვეული თანმიმდევრობით 4 6 5 1 3 2
დ ა ნ * * *
ც ხ ე ნ ა
ფ ლ ა ნ გ ი
ო რ ც ი ე ლ
გ ა ნ ა ხ
ე თ მ ა რ
შ ე ტ ე ვ ა
1 234 56
:დაშიფრული ტექსტი* * * ნნინმე ილხრა აგეაავდცფო ეშნეაცატახლრგთე
ტექსტის გასაშიფრი გასაღებების
:რაოდენობა ხდება
M! x N!
ამ კონკრეტულ:შემთხვევაში
7! x 6! = 3628800
მატრიცული მეთოდით დაშიფრული ტექსტის გაშიფრვა
შ ე ტ ე ვ ა
გ ა ნ ა ხ
ო რ ც ი ე ლ
ე თ მ ა რ
ც ხ ე ნ ა
ფ ლ ა ნ გ ი
დ ა ნ * * *
* * შ ოეცფდეგრთხლატაც ეანენიმნნ ვაეააგ ახლრ*ი
შ ე ტ ე ვ ა
გ ა ნ ა ხ
ო რ ც ი ე ლ
ე თ მ ა რ
ც ხ ე ნ ა
ფ ლ ა ნ გ ი
დ ა ნ * * *
ტექსტის სვეტებში შეტანა ტექსტის სტრიქონებიდან გამოტანა
: გასაშიფრი ტექსტი
:გაშიფრული ტექსტი შეტევა განახორციელეთ მარცხენა
***ფლანგიდან
მატრიცული მეთოდის პროგრამული უზრუნველყოფა
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
მეთოდები
კლასის მოდელი
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]; }}
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]; } }
ტექსტის გამოტანა მატრიციდან
სტრიქონულად
საწყისი ტექსტის აღდგენა
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++; }}
სვეტების გამოტანის თანმიმდევრობის მიღება
მომხმარებლისგან
ტექსტის გამოტანა შვეულად მომხმარებლის
მიერ მითითებულითანმიმდევრობით
დაშიფრული ტექსტისმიღება
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]]; }}
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]; }}
პოლიბიას მეთოდი და მისი არსი
:დასაშიფრი ტექსტი
მმ ტერი მარცხენა ფლანგზეა
ა ბ გ დ ე ვ
ზ თ ი კ ლ მმ
ნ ო პ ჟ რ ს
ტ უ ფ ქ ღ ყ
შ ჩ ც ძ წ ჭ
ხ ჯ ჰ . ,
ანბანი
ა ბ გ დ ე ვ
ა
ბ
გ
დ
ე
ვ
შიფრაციის წესი
თითოეული ასო იცვლება მისი თითოეული ასო იცვლება მისიკოორდინატებითკოორდინატებით
მმ ბვბვიცვლება
:დაშიფრული ტექსტი
ბვდააეგებგვდბვააგეეგვააეგააავდდგბეააგააგბააეაა
პოლიბიას მეთოდით დაშიფრული ტექსტის დეშიფრაცია
:გასაშიფრი ტექსტი
ბვბვდააეგებგვდბვააგეეგვააეგააავდდგბეააგააგბააეაა
დეშიფრაციის წესი
ბვბვ
ვვბბა ბ გ დ ე ვ
ზ თ ი კ ლ მმ
ნ ო პ ჟ რ ს
ტ უ ფ ქ ღ ყ
შ ჩ ც ძ წ ჭ
ხ ჯ ჰ . ,
ა ბ გ დ ე ვვ
ა
ბბ
გ
დ
ე
ვ
მმ
მმ ტერი მარცხენა ფლანგზეა
:გაშიფრული ტექსტი
პოლიბიას მეთოდის პროგრამული უზრუნველყოფა
კლასის მოდელი
Codestring text; //საწყისი ტექსტი
string codedText; //დაშიფრული ტექსტი
void polibiaCoding(); // შიფრაცია
string polibiaEnCoding(string textOfEncode); // დეშიფრაცია
კლასისსახელი
private
ატრიბუტები
public
მეთოდები
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; } } } }
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;}