Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська Політехніка»
Інститут комп’ютерних технологій автоматики та метрології
Кафедра Безпеки Інформаційних Технологій
Звіт
Про виконання лабораторної роботи № 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:
}
Результати роботи програми:
Висновок: На даній лабораторній роботі я вивчив математичний апарат, який використовується в шифрах перестановки, а також принципи побудови матричного шифру обходу та шифру Кардано. Написав програму для за шифрування та розшифрування тексту методом Кардано.