Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська Політехніка»
Інститут комп’ютерних технологій автоматики та метрології
Кафедра Безпеки Інформаційних Технологій
Звіт
Про виконання лабораторної роботи № 2
“Криптографічні системи та протоколи”
Львів 2012
Мета роботи: Навчитися розробляти програмне забезпечення для реалізації шифрів перестановки.
Завдання:
1) Вивчити математичний апарат, який використовується в шифрах перестановки, а також принципи побудови матричного шифру обходу та шифру Кардано.
2) Скласти блок-схеми алгоритмів та програму для реалізації зашифрування та розшифрування відкритого тексту за допомогою шифру Кардано з періодом l=36, забезпечити зашифрування та розшифрування тексту(враховуючи усі розділові знаки).
Блок-схема:
Остаточна версія програми:
private void runButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (codeRadio.isSelected()==true)
{
String inpt=this.inText.getText();
int len=inpt.length();
int lenn=len;
if (len<36)
lenn+=36-len;
else if (len%36!= 0)
lenn+=len%36;
char [] inpn=inpt.toCharArray();
char [] inp= new char [lenn];
for(int i=0;i<36;i++)
{
if(i>len-1)
inp[i]='a';
else
inp[i]=inpn[i];
}
char [] kod = new char[lenn];
kod[0]=inp[18];
kod[1]=inp[0];
kod[2]=inp[9];
kod[3]=inp[19];
kod[4]=inp[10];
kod[5]=inp[11];
kod[6]=inp[20];
kod[7]=inp[12];
kod[8]=inp[21];
kod[9]=inp[22];
kod[10]=inp[1];
kod[11]=inp[27];
kod[12]=inp[28];
kod[13]=inp[29];
kod[14]=inp[13];
kod[15]=inp[2];
kod[16]=inp[14];
kod[17]=inp[3];
kod[18]=inp[23];
kod[19]=inp[30];
kod[20]=inp[24];
kod[21]=inp[31];
kod[22]=inp[15];
kod[23]=inp[16];
kod[24]=inp[17];
kod[25]=inp[25];
kod[26]=inp[4];
kod[27]=inp[5];
kod[28]=inp[32];
kod[29]=inp[6];
kod[30]=inp[33];
kod[31]=inp[34];
kod[32]=inp[7];
kod[33]=inp[35];
kod[34]=inp[26];
kod[35]=inp[8];
String kodd = new String(kod);
this.outText.setText(kodd);
}
else if (decodeRadio.isSelected()==true)
{
String inpt=this.inText.getText();
int len=inpt.length();
int lenn=len;
if (len<36)
lenn+=36-len;
else if (len%36!= 0)
lenn+=len%36;
char [] inpn=inpt.toCharArray();
char [] inp= new char [lenn];
for(int i=0;i<36;i++)
{
if(i>len-1)
inp[i]='a';
else
inp[i]=inpn[i];
}
char [] kod = new char[lenn];
kod[18]=inp[0];
kod[0]=inp[1];
kod[9]=inp[2];
kod[19]=inp[3];
kod[10]=inp[4];
kod[11]=inp[5];
kod[20]=inp[6];
kod[12]=inp[7];
kod[21]=inp[8];
kod[22]=inp[9];
kod[1]=inp[10];
kod[27]=inp[11];
kod[28]=inp[12];
kod[29]=inp[13];
kod[13]=inp[14];
kod[2]=inp[15];
kod[14]=inp[16];
kod[3]=inp[17];
kod[23]=inp[18];
kod[30]=inp[19];
kod[24]=inp[20];
kod[31]=inp[21];
kod[15]=inp[22];
kod[16]=inp[23];
kod[17]=inp[24];
kod[25]=inp[25];
kod[4]=inp[26];
kod[5]=inp[27];
kod[32]=inp[28];
kod[6]=inp[29];
kod[33]=inp[30];
kod[34]=inp[31];
kod[7]=inp[32];
kod[35]=inp[33];
kod[26]=inp[34];
kod[8]=inp[35];
String kodd = new String(kod);
this.outText.setText(kodd);
}
// TODO add your handling code here:
}
Результати роботи програми:
Висновок: На даній лабораторній роботі я вивчив математичний апарат, який використовується в шифрах перестановки, а також принципи побудови матричного шифру обходу та шифру Кардано. Написав програму для за шифрування та розшифрування тексту методом Кардано.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!