1. Oqimni shifrlash algoritmini amalga olish a5/1


Download 76.27 Kb.
bet3/3
Sana18.06.2023
Hajmi76.27 Kb.
#1556280
1   2   3
Bog'liq
5-var(M-ish)

A5/1 c++ da
#include
#include
class A51 {
private:
std::bitset<19> register1;
std::bitset<22> register2;
std::bitset<23> register3;
std::bitset<64> key;
std::bitset<22> iv;
std::bitset<19> clockRegister(std::bitset<19> reg, int feedback) {
std::bitset<19> newReg;
newReg[0] = reg[feedback] ^ reg[0];
for (int i = 1; i < 19; i++) {
newReg[i] = reg[i - 1];
}
return newReg;
}
std::bitset<22> clockRegister2(std::bitset<22> reg, int feedback) {
std::bitset<22> newReg;
newReg[0] = reg[feedback] ^ reg[0];
for (int i = 1; i < 22; i++) {
newReg[i] = reg[i - 1];
}
return newReg;
}
std::bitset<23> clockRegister3(std::bitset<23> reg, int feedback) {
std::bitset<23> newReg;
newReg[0] = reg[feedback] ^ reg[0];
for (int i = 1; i < 23; i++) {
newReg[i] = reg[i - 1];
}
return newReg;
}

public:
A51(std::bitset<64> key, std::bitset<22> iv) : key(key), iv(iv) {


// Инициализация регистров на основе ключа и вектора инициализации
}
std::bitset<32> generateKeystream(int length) {
std::bitset<32> keystream;
for (int i = 0; i < length; i++) {
int majority = (register1[8] & register2[10]) ^ (register1[8] & register3[10]) ^ (register2[10] & register3[10]);
if (register1[8] == majority) {
int newBit = (register1[18] ^ register1[17]) ^ (register1[16] ^ register1[13]);
register1 = clockRegister(register1, 18);
register2 = clockRegister2(register2, 21);
register3 = clockRegister3(register3, 22);
keystream[i] = newBit;
}
else if (register2[10] == majority) {
int newBit = (register2[21] ^ register2[20]);
register1 = clockRegister(register1, 18);
register2 = clockRegister2(register2, 21);
register3 = clockRegister3(register3, 22);
keystream[i] = newBit;
}
else {
int newBit = (register3[22] ^ register3[21] ^ register3[7] ^ register3[20]);
register1 = clockRegister(register1, 18);
register2 = clockRegister2(register2, 21);
register3 = clockRegister3(register3, 22);
keystream[i] = newBit;
}
}
return keystream;
}
std::bitset<32> encrypt(std::bitset<32>

Xulosa
A5/1 ni amalga oshirish qiyin emas, turli tavsiflar qiyinchiliklarni keltirib chiqaradi. Buning sababi shundaki, algoritm haqidagi ma’lumotlar uning mustahkamligini ta’minlash maqsadida sir saqlangan, biroq keyinchalik sizib chiqish sodir bo‘lgan va endi har bir manba ma’lumotlarni o‘ziga xos tarzda izohlaydi. Algoritm har qanday ma'lumotni odatiy oqimli shifrlash uchun ishlab chiqilmagan, bu maqsadlar uchun yanada rivojlangan va samarali shifrlamavjud. A5/1 samarali, ma'lum statistik testlarni qondiradi, muhim zaif tomoni shundaki, uning registrlari kalitni qo'pol kuch bilan qidirishni oldini olish uchun juda qisqa. Uzunroq siljish registrlari va zichroq qayta aloqa polinomlari bo'lgan A5 versiyalari ushbu zaiflik orqali algoritmni buzish ehtimolini kamaytirishi kerak.


Foydalanilgan adabiyotlar.
1. Питер Вайл, Стефани Ворнер. Цифровая трансформация бизнеса. Изменение бизнесмодели для организации нового поколени. ISBN: 978-5-9614-2250-4. Литва 2019 год,260 стр. 2. Макаров А. Ю., Макаров А.А. Цифровая экономика. Технологии меняют менеджмент. Практика, внедрения и результаты. / — М.: СО ЛО Н -П ресс, 2021. - 160 с.ISBN 978- 5-91359-437-2 3. Носова С.С., Путилов А.В., Норкина А.Н. Основы цифровой экономики : Учебник / . — Москва : КНОРУС, 2021. — 392 с. (Бакалавриат).ISBN 978-5-406-05315-7 4. Головенчик, Г. Г. Цифровая экономика [Электронный ресурс] : учеб.-метод. комплекс / Г. Г. Головенчик. – Минск : БГУ, 2020. – 1 электрон. опт. диск (CD-ROM). ISBN 978- 985-566-847-4

Download 76.27 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling