O‘zbekiston xalqaro islom akademiyasi
Islom iqtisodiyoti va xalqaro munosabatlar fakulteti
“Algoritmlarni loyihalashtirish va tahlil qilish” fanidan
Axborot xavfsizligini boshqarish 1-kurs magistranti
To’ychiyev Xurshidbekning
1-amaliy mashg‘uloti topshirig‘i
Mavzu: Mavjud shifrlash algoritmlarini o`rganish va tahlil qilish
Qabul qiluvchi: PhD D.S.Tuxtanazarov
1-topshiriq
1. Masalaning berilishi. Shifrlash algoritmlarini uchun dastur yaratish.
2. Sezar algoritmi.
3. Dastur kodi.
#include
#include
using namespace std;
int main() {
string str;
cin >> str;
for(int i = 0 ; i < str.length(); i++){
if(str[i] == 'Z') str[i] = 'A';
else str[i]++;
}
cout << str;
return 0;
}
4. Natija.
2-topshiriq
1. Masalaning berilishi. Shifrlash algoritmlarini uchun dastur yaratish.
2. Vigenere algoritmi.
Shifrlash
Ochiq matnning birinchi harfi G harfi kalitning birinchi harfi bo'lgan A bilan bog'langan. Shunday qilib, Vijener kvadratining G qatori va A ustunidan, ya'ni G dan foydalaning. Xuddi shunday, ochiq matnning ikkinchi harfi uchun kalitning ikkinchi harfi, E qatoridagi harf va Y ustuni C bo'ladi. Qolgan qismi ochiq matn ham xuddi shunday shifrlangan.
Shifrlash uchun jadval – Geeks
3. Dastur kodi.
#include
using namespace std;
string generateKey(string str, string key)
{
int x = str.size();
for (int i = 0; ; i++)
{
if (x == i)
i = 0;
if (key.size() == str.size())
break;
key.push_back(key[i]);
}
return key;
}
string cipherText(string str, string key)
{
string cipher_text;
for (int i = 0; i < str.size(); i++)
{
char x = (str[i] + key[i]) %26;
x += 'A';
cipher_text.push_back(x);
}
return cipher_text;
}
string originalText(string cipher_text, string key)
{
string orig_text;
for (int i = 0 ; i < cipher_text.size(); i++)
{
char x = (cipher_text[i] - key[i] + 26) %26;
// convert into alphabets(ASCII)
x += 'A';
orig_text.push_back(x);
}
return orig_text;
}
// Driver program to test the above function
int main()
{
string str = "GEEKSFORGEEKS";
string keyword = "AYUSH";
string key = generateKey(str, keyword);
string cipher_text = cipherText(str, key);
cout << "Ciphertext : "
<< cipher_text << "\n";
cout << "Original/Decrypted Text : "
<< originalText(cipher_text, key);
return 0;
}
4. Natija.
2-topshiriq
1. Masalaning berilishi. Shifrlash algoritmlarini uchun dastur yaratish.
2. Keyword algoritmi.
Ushbu usulda bir nechta fikrlarga e'tibor berish kerak:
Barcha xabarlar katta harflar bilan kodlangan.
Bo'sh joy, maxsus belgilar va raqamlar kalit so'zlarni hisobga olmaydi, lekin siz ularni u erga qo'yishingiz mumkin.
Xabarni shifrlashda bo'sh joy, maxsus belgilar va raqamlar ta'sirlanmaydi.
3. Dastur kodi.
#include
using namespace std;
string encoder(string key)
{
string encoded = "";
bool arr[26] = {0};
for (int i=0; i
{
if(key[i] >= 'A' && key[i] <= 'Z')
{
if (arr[key[i]-65] == 0)
{
encoded += key[i];
arr[key[i]-65] = 1;
}
}
else if (key[i] >= 'a' && key[i] <= 'z')
{
if (arr[key[i]-97] == 0)
{
encoded += key[i] - 32;
arr[key[i]-97] = 1;
}
}
}
for (int i=0; i<26; i++)
{
if(arr[i] == 0)
{
arr[i]=1;
encoded += char(i + 65);
}
}
return encoded;
}
string cipheredIt(string msg, string encoded)
{
string cipher="";
for (int i=0; i
{
if (msg[i] >='a' && msg[i] <='z')
{
int pos = msg[i] - 97;
cipher += encoded[pos];
}
else if (msg[i] >='A' && msg[i] <='Z')
{
int pos = msg[i] - 65;
cipher += encoded[pos];
}
else
{
cipher += msg[i];
}
}
return cipher;
}
int main()
{
// Hold the Keyword
string key;
key = "Computer";
cout << "Keyword : " <
// Function call to generate encoded text
string encoded = encoder(key);
// Message that need to encode
string message = "GeeksforGeeks";
cout << "Message before Ciphering : " << message << endl;
// Function call to print ciphered text
cout << "Ciphered Text : " << cipheredIt(message,encoded) << endl;
return 0;
}
4. Natija.
Do'stlaringiz bilan baham: |