O‘ZBEKISTON RESPUBLIKASIAXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI
"Axborot xavfsizligi" kafedrasi
Fan: Kriptografiya 1
Amaliy ish №4
Guruh: AX19-09
Talaba: Xudayberdiyev G’
Rahbar: Shakarov A
Samarqand-2021 y.
Mavzu: RC4 shifrlash algoritmi yordamida M ma’lumotlarni shifrlash.
Nazariya:
RC4 shifrlash algoritmi haqida (oqimli)
RC4 shifrlash algoritmi ma'lumotlar grafiklarining yuklamasini buzish uchun ishlatiladi. RC4-kompyuter tarmoqlarida (masalan, SSL protokolida va Windows NT-da parollarni shifrlash uchun) turli xil axborotni himoya qilish tizimlarida keng qo’llaniladigan oqim shifrlash. Shifrlash RSA Security Inc. tomonidan ishlab chiqilgan. Va uni ishlatish uchun litsenziya talab qilinadi. RC4 muallifi Ronald Rivest (Ronald Rivest). RC Ron’s Code yoki Rivest’s Cipher deb ataladi. 1995gacha RC4 kodi hech qanday joyda chop etilmadi.
Rc4 algoritmi parametrlangan kalit asosida yagona taqsimlangan psevdosluchaynyh bit generatoriga asoslangan har qanday oqim shifrlash kabi qurilgan. Shifrlashning asosiy afzalliklari-yuqori tezlik va o’zgaruvchan kalit hajmi. Odatda, har bir matn baytiga 19 ta mashina buyrug’i bajariladi.
RC4-aslida uning blok hajmi bilan belgilanadi algoritmlar bir sinf. Bu parametr n algoritm uchun so'z hajmi hisoblanadi. Odatda, n = 8, lekin tahlil qilish uchun uni kamaytirish mumkin. Biroq, xavfsizlikni oshirish uchun bu qiymatni oshirish kerak. Ichki davlat RC4 bir qator hajmi iborat 2n so'zlar va ikki metr, har bir so'z hajmi. Qator s-box sifatida tanilgan, va keyin S sifatida belgilangan bo'ladi. Ikki metr i va j orqali belgilanadi.
Dastur kodi:
#include
#include
#include
using namespace std;
vector permute(vector, vector);
string encrypt(vectors , vector t, string p);
string decrypt(vectors, vector t, string p);
int main() {
string plaintext = "13 11 74";
string plaintext2 = "Giyosiddin Xudayberdiyev";
vector S(256); //For loop uchun maximal qiymat sifatida kiritiladi
vector T(256); // Kiritilgan qiymatning baytlar soniga ko'ra kalit generatsiya qiladi bu uchun maximal qiymat 256
int key[] = { 1,2,3,6 };
int key2[] = { 5,7,8,9 };
int tmp = 0;
for (int i = 0; i < 256;i++) {
S[i] = i;
T[i] = key[( i % (sizeof(key)/sizeof(*key)) )];
}
S = permute(S, T);
for (int i = 0; i < 256 ;i++) {
cout << S[i] << " ";
if ((i + 1) % 16 == 0)
cout << endl;
}
cout << endl;
string p = encrypt(S, T, plaintext);
cout << "Ochiq matn: " << plaintext << endl;
cout << "Shifrlangan matn: " << " " << p << endl;
cout << "Deshifrlangan matn: " << decrypt(S, T, p) << endl << endl;
tmp = 0;
for (int i = 0; i < 256;i++) {
S[i] = i;
T[i] = key2[(i % (sizeof(key) / sizeof(*key)))];
}
S = permute(S, T);
for (int i = 0; i < 256;i++) {
cout << S[i] << " ";
if ((i + 1) % 16 == 0)
cout << endl;
}
cout << endl;
p = encrypt(S, T, plaintext2);
cout << "Matn 2: " << plaintext2 << endl;
cout << "Shifrlangan matn: " << p << endl;
cout << "Deshifrlangan matn: "<system("pause");
return 0;
}
string decrypt(vectors, vector t, string p) {
int i = 0;
int j = 0;
int tmp = 0;
int k = 0;
int b;
int c;
int * plain = new int[p.length()];
string plain_T;
for (int r = 0; r < p.length(); r++) {
i = (i + 1) % 256;
j = (j + s[i]) % 256;
b = s[i];
s[i] = s[j];
s[j] = b;
tmp = (s[i] + s[j]) % 256;
k = s[tmp];
c = ((int)p[r] ^ k);
plain[r] = c;
plain_T += (char)plain[r];
}
return plain_T;
}
string encrypt(vectors, vector t, string p) {
int i = 0;
int j = 0;
int tmp = 0;
int k = 0;
int b;
int c;
int * cipher = new int [p.length()];
string cipher_T;
cout << "Generatsiyalangan kalit: ";
for (int r = 0; r < p.length(); r++) {
i = (i + 1) % 256;
j = (j + s[i]) % 256;
b = s[i];
s[i] = s[j];
s[j] = b;
tmp = (s[i] + s[j]) % 256;
k = s[tmp];
cout << k << " ";
c = ((int)p[r] ^ k);
cipher[r] = c;
cipher_T += (char)cipher[r];
}
cout << endl;
return cipher_T;
}
vector permute(vector s, vector t) {
int j = 0;
int tmp;
for (int i = 0; i< 256; i++) {
j = (j + s[i] + t[i]) % 256;
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
return s;
}
Dasturdan olingan natija:
Do'stlaringiz bilan baham: |