Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки, молоді та спорту України
Національний університет «Львівська Політехніка»
Звіт
Про виконання лабораторної роботи №2
з курсу «Прикладна криптологія»
на тему «Система блочного шифрування S-DES»
Перевірив: Петришин А.В.
Львів – 2012
Мета: Створити просту криптографічну систему на основі спрощеного блочного алгоритму Simple DES (S-DES) та дослідити її роботу.
Завдання: Створити просту криптографічну систему на основі спрощеного блочного алгоритму S-DES.
Код програми на мові JavaScript:
<html><head><title>Lab2</title></head><body><form name="data">
Текст:<input type="text" name="text"> <span id="1"></span><br>
Ключ:<input type="text" name="key"> <span id="2"></span><br>
<input type="button" value="Encrypt" onclick="Encrypt();">
<input type="button" value="Decrypt" onclick="Decrypt();">
</form><script>
function Encrypt(){var text=document.data.text.value;
var span1=document.getElementById("1");var span2=document.getElementById("2");
var K1=""; var K2=""; var K=""; var K=document.data.key.value;
if (!K) for(i=0;i<10;i++) K+=Math.round(Math.random());
span2.innerHTML=K;K1=P8(Zsuv(P10(K)));K2=P8(Zsuv(Zsuv(Zsuv(P10(K)))));
text=IP(text);text=F(text,K1);text=F(text,K2);text=IP_1(text);
span1.innerHTML=text;}
function Decrypt(){var text=document.data.text.value;
var span1=document.getElementById("1");var span2=document.getElementById("2");
var K1=""; var K2=""; var K=""; var K=document.data.key.value;
span2.innerHTML=K;K1=P8(Zsuv(P10(K)));K2=P8(Zsuv(Zsuv(Zsuv(P10(K)))));
text=IP(text);text=F_1(text,K2);text=F_1(text,K1);text=IP_1(text);
span1.innerHTML=text;}
function F(t,Ki){var L=""; var R=""; var LR="";
for(i=0;i<4;i++) {L+=t.charAt(i)+""; R+=t.charAt(i+4)+"";}
LR= (R.charAt(3)*1+Ki.charAt(0)*1)%2+""+(R.charAt(0)*1+Ki.charAt(1)*1)%2+""+
(R.charAt(1)*1+Ki.charAt(2)*1)%2+""+(R.charAt(2)*1+Ki.charAt(3)*1)%2+""+
(R.charAt(1)*1+Ki.charAt(4)*1)%2+""+(R.charAt(2)*1+Ki.charAt(5)*1)%2+""+
(R.charAt(3)*1+Ki.charAt(6)*1)%2+""+(R.charAt(0)*1+Ki.charAt(7)*1)%2+"";
var S0="1032321002133131"; var S1="1123201330102103"; var a=0;
a=1*S0.charAt((LR.charAt(0)*2+LR.charAt(3)*1)*4+(LR.charAt(1)*2+LR.charAt(2)*1)*1); S0=((a-(a%2))/2)+""+(a%2)+"";
a=1*S1.charAt((LR.charAt(4)*2+LR.charAt(7)*1)*4+(LR.charAt(5)*2+LR.charAt(6)*1)*1); S1=((a-(a%2))/2)+""+(a%2)+"";
LR=S0+""+S1+"";t="";for(i=0;i<4;i++) t+=R.charAt(i)+"";
for(i=0;i<4;i++) t+=((L.charAt(i)*1)+(LR.charAt(i)*1))%2+"";return t;}
function F_1(t,Ki){var L=""; var R=""; var LR="";
for(i=0;i<4;i++) {L+=t.charAt(i)+""; R+=t.charAt(i+4)+"";}
LR= (L.charAt(3)*1+Ki.charAt(0)*1)%2+""+(L.charAt(0)*1+Ki.charAt(1)*1)%2+""+
(L.charAt(1)*1+Ki.charAt(2)*1)%2+""+(L.charAt(2)*1+Ki.charAt(3)*1)%2+""+
(L.charAt(1)*1+Ki.charAt(4)*1)%2+""+(L.charAt(2)*1+Ki.charAt(5)*1)%2+""+
(L.charAt(3)*1+Ki.charAt(6)*1)%2+""+(L.charAt(0)*1+Ki.charAt(7)*1)%2+"";
var S0="1032321002133131"; var S1="1123201330102103"; var a=0;
a=1*S0.charAt((LR.charAt(0)*2+LR.charAt(3)*1)*4+(LR.charAt(1)*2+LR.charAt(2)*1)*1); S0=((a-(a%2))/2)+""+(a%2)+"";
a=1*S1.charAt((LR.charAt(4)*2+LR.charAt(7)*1)*4+(LR.charAt(5)*2+LR.charAt(6)*1)*1); S1=((a-(a%2))/2)+""+(a%2)+"";
LR=S0+""+S1+"";t="";for(i=0;i<4;i++) t+=((R.charAt(i)*1)+(LR.charAt(i)*1))%2+"";
for(i=0;i<4;i++) t+=L.charAt(i)+"";return t;}
function IP(b){var a="";a+=b.charAt(1)+b.charAt(5)+b.charAt(2)+b.charAt(0)+
b.charAt(3)+b.charAt(7)+b.charAt(4)+b.charAt(6);return a;}
function IP_1(b){var a="";a+=b.charAt(3)+b.charAt(0)+b.charAt(2)+b.charAt(4)+
b.charAt(6)+b.charAt(1)+b.charAt(7)+b.charAt(5);return a;}
function P10(a){var b="";b+=a.charAt(2)+a.charAt(4)+a.charAt(1)+a.charAt(6)+a.charAt(3)+
a.charAt(9)+a.charAt(0)+a.charAt(8)+a.charAt(7)+a.charAt(5);return b;}
function Zsuv(a){var b="";b+=a.charAt(1)+a.charAt(2)+a.charAt(3)+a.charAt(4)+a.charAt(0)+
a.charAt(6)+a.charAt(7)+a.charAt(8)+a.charAt(9)+a.charAt(5);return b;}
function P8(a){var b="";b+=a.charAt(5)+a.charAt(2)+a.charAt(6)+a.charAt(3)+
a.charAt(7)+a.charAt(4)+a.charAt(9)+a.charAt(8);return b;}
</script></body></html>
Результати роботи програми.
Зашифровка тексту:
Розшифровка тексту:
Висновок.
Я ознайомився з роботою блокового шифру DES на прикладі спрощеного навчального алгоритму Simple DES.
Програма зашифровує вхідний 8-бітовий текст 10-бітовим ключем. Якщо ключ не вводити, програма згенерує його випадковим чином.
Зашифрований текст виводиться після поля для вводу повідомлення, а використаний ключ – після поля вводу ключа.
Для розшифровки потрібно ввести отриманий криптотекст і використаний ключ. Розшифроване повідомлення виводиться після поля для вводу тексту.
Як бачимо на знімках екрану, програма зашифрувала повідомлення «00101101» за допомогою згенерованого випадковим чином ключа «0010011111» і отримала криптограму «00101000». Криптограма цим самим ключем успішно розшифрована, отримана початкова послідовність «00101101».
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!