Листинги разработанных программ
Шифр Цезаря
<html>
<head>
<title>Шифр Цезаря</title>
</head>
<body>
<form name="form1">
Текст:
<input name="text1" type="text" size="100" value=""><br>
Ключ:
<input name="text2" type="text" size="2" value=""><br>
<input onclick="z()" type="button" value="Шифровать">
<input onclick="r()" type="button" value="Расшифровать"><br>
<script type="text/javascript">
function z(){
var A=["А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я"];//массив алфавита
var Z=[];// массив алфавита замены
var a = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";//строка алфавита
var text = document.form1.text1.value.toUpperCase();//ввод текста
var res= "";
var key = 1*document.form1.text2.value;// получение числовой формы сдвига
for (i=0; i<33; i++)
{
if (i<key) Z[i + (33-key)] = A[i];
else Z[i-key] = A[i];// заполнение массива алфавита замены
}
z=Z.join("");// получение строки замены
for (i = 0; i < text.length; i++)//длина сообщения
s = a.lastIndexOf(text.charAt(i)),//находим индекс в алфавите совпадающий с введенными символами
s = z.charAt(s),//находим в строке замены нужный символ
res += s;
alert(res);
}
function r(){//расшифрование
var A=["А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я"];
var Z=[];
var a = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
var text = document.form1.text1.value.toUpperCase();//ввод текста
var res = "";
var key = 1*document.form1.text2.value;
for (i=0; i<33; i++)
{
if ((i+key)>32) Z[i - (33-key)] = A[i];
else Z[i+key] = A[i];
}
z=Z.join("");
for (i = 0; i < text.length; i++)//длина сообщения
s = a.lastIndexOf(text.charAt(i)),//находим индекс в алфавите совпадающий с введенными символами
s = z.charAt(s),//находим в строке замены нужный символ
res+= s;
alert(res)
}
</script>
</body>
</html>
Атбаш
<html>
<head>
<title>Атбаш</title>
</head>
<body>
<form name="form1">
Введите текст:
<input name="text1" type="text" size="100" value=""><br>
<input onclick="at()" type="button" value="Результат"><br>
</form>
<script language="JavaScript">
function at() {
var a = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';//исходный алфавит
var z = 'ЯЮЭЬЫЪЩШЧЦХФУТСРПОНМЛКЙИЗЖЁЕДГВБА';//алфавит замены
var res = '',
text=document.form1.text1.value.toUpperCase();//перевод в верхний регистр
for(i = 0; i < text.length; i++) {
s = a.indexOf(text.charAt(i));//находим позицию введенного символа в алфавите
res=res+z.charAt(s);//присваиваем переменной "r" символ стоящий на найденной позиции
}
alert(res);//вывод результата
}
</script>
</body>
</html>
Квадрат Полибия
<html>
<head>
<title>
Квадрат Полибия
</title>
<script type="text/javascript">
function Polib1()//функция для шифрования
{
var text=document.getElementById("isxtext").value.toUpperCase()//присваиваем переменной введенный текст, переводим буквы введенного текста в верхний регистр
text=text.replace(/\s+/g,''),//удаляем пробелы из введенного текста
res='',//хранение для результата
A="КОТАБВГДЕЁЖЗИЙЛМНПРСУФХЦЧШЩЪЫЬЭЮЯ.,-",//начальный алфавит
M="1234567";
for (i=0; i<text.length; i++)
{
m=A.indexOf(text.charAt(i));//находим индекс
res=res+M.charAt(Math.floor(m/5));//находим нужную строки
res=res+M.charAt(m%5);//находим нужный столбец
}
alert(res);//выводим результат
}
function Polib2(){//функция для расшифрования
var text=document.getElementById("isxtext").value,//считывание введенного текста
text=text.replace(/\s+/g,''),//удаление пробелов
res='',//хранение для результата
A="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ.,-",
M="123456";
for (i=0; i<text.length; i+=2)
{
m1=M.indexOf(text.charAt(i+1)); // берем индекс второго символа
m=M.indexOf(text.charAt(i)); // берем индекс первого символа
res=res+A.charAt(m*6+m1); // присваиваем переменной res символ стоящий на этих позициях A
}
alert(res);//выводим результат
}
</script>
</head>
<body>
Введите исходный текст:<br>
<input size="120" value="23 34 31 34 42 55 16 36 43 26 24 23 11 41 16 36 16 12 36 34 33 16 26 43 35 24 52 56" id="isxtext"><br>
<input type="button" onclick="Polib1()" value="шифрование">
<input type="button" onclick="Polib2()" value="расшифрование">
</body>
</html>
Метод перестановок
<html>
<head>
<title>Метод перестановок</title>
</head>
<body>
Введите ключ записи:
<input id="text1" type="text" size="2"value="10">
<input id="text2" type="text" size="2"value="1">
<input id="text3" type="text" size="2"value="2">
<input id="text4" type="text" size="2"value="3">
<input id="text5" type="text" size="2"value="9">
<input id="text6" type="text" size="2"value="4">
<input id="text7" type="text" size="2"value="8">
<input id="text8" type="text" size="2"value="5">
<input id="text9" type="text" size="2"value="7">
<input id="text10" type="text" size="2"value="6"><br>
Введите ключ считывания:
<input id="text11" type="text" size="2" value="10">
<input id="text12" type="text" size="2"value="1">
<input id="text13" type="text" size="2"value="2">
<input id="text14" type="text" size="2"value="3">
<input id="text15" type="text" size="2"value="6">
<input id="text16" type="text" size="2"value="4">
<input id="text17" type="text" size="2"value="5">
<input id="text18" type="text" size="2"value="7">
<input id="text19" type="text" size="2"value="9">
<input id="text20" type="text" size="2"value="8"><br>
Tекст:<br>
<input id="text21" type="text" size="200" value=""/><br>
<input onclick="Z()" type="button" value="Шифровать"/>
<input onclick="R()" type="button" value="Расшифровать"/><br>
<script type="text/javascript">
var z1=document.getElementById('text1').value*1,
z2=document.getElementById('text2').value*1,
z3=document.getElementById('text3').value*1,
z4=document.getElementById('text4').value*1,
z5=document.getElementById('text5').value*1,
z6=document.getElementById('text6').value*1,
z7=document.getElementById('text7').value*1,
z8=document.getElementById('text8').value*1,
z9=document.getElementById('text9').value*1,
z10=document.getElementById('text10').value*1;////считывание и преобразование в число ключа записи
var s1=document.getElementById('text11').value*1,
s2=document.getElementById('text12').value*1,
s3=document.getElementById('text13').value*1,
s4=document.getElementById('text14').value*1,
s5=document.getElementById('text15').value*1,
s6=document.getElementById('text16').value*1,
s7=document.getElementById('text17').value*1,
s8=document.getElementById('text18').value*1,
s9=document.getElementById('text19').value*1,
s10=document.getElementById('text20').value*1;//считывание и преобразование в число ключа считывания
var r1=[]; var r2=[]; var r3=[]; var r4=[]; var r5=[]; var r6=[];
var r7=[]; var r8=[]; var r9=[]; var r10=[]; var m1=[]; var m2=[]; var z=[]; var s=[];
m1=[r1,r2,r3,r4,r5,r6,r7,r8,r9,r10];//массив открытого текста
z=[z1,z2,z3,z4,z5,z6,z7,z8,z9,z10];
s=[s1,s2,s3,s4,s5,s6,s7,s8,s9,s10];//массивы ключей записи и ключей считывания
function Z(){
var text=document.getElementById('text21').value;//считывание текста
var res="";
for (i=0; i<10; i++){//разбиения открытого текста на массивы по 10 элементов
r1[i]=text.charAt(i)
r2[i]=text.charAt((i+10))
r3[i]=text.charAt((i+20))
r4[i]=text.charAt((i+30))
r5[i]=text.charAt((i+40))
r6[i]=text.charAt((i+50))
r7[i]=text.charAt((i+60))
r8[i]=text.charAt((i+70))
r9[i]=text.charAt((i+80))
r10[i]=text.charAt((i+90))
}
for (i=0; i<10; i++){m2[z[i]-1]=m1[i];}//перестановка элементов массива
for(j=0;j<10;j++){m=m2[j];res+=m[s1-1];}//выбор элементов массива
for(j=0;j<10;j++){m=m2[j];res+=m[s2-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[s3-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[s4-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[s5-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[s6-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[s7-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[s8-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[s9-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[s10-1];}
alert(res);
}
function R(){
var text=document.getElementById('text21').value;//считывание текста
var res="";//Переменные для результата
for (i=0; i<10; i++){//разбиения открытого текста
r1[i]=text.charAt(i)
r2[i]=text.charAt((i+10))
r3[i]=text.charAt((i+20))
r4[i]=text.charAt((i+30))
r5[i]=text.charAt((i+40))
r6[i]=text.charAt((i+50))
r7[i]=text.charAt((i+60))
r8[i]=text.charAt((i+70))
r9[i]=text.charAt((i+80))
r10[i]=text.charAt((i+90))
}
for (i=0; i<10; i++){m2[s[i]-1]=m1[i];}
for(j=0;j<10;j++){m=m2[j];res+=m[z1-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[z2-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[z3-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[z4-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[z5-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[z6-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[z7-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[z8-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[z9-1];}
for(j=0;j<10;j++){m=m2[j];res+=m[z10-1];}
alert(res);
}
</script>
</body>
</html>
Метод гаммирования
<html>
<head>
<title>Шифрование методом гаммирования</title>
</head>
<body>
<script type="text/javascript">
function gammir(){
var gam1=document.form1.text2.value*1;
var gam2=document.form1.text3.value*1;
var gam3=document.form1.text4.value*1;
var gam4=document.form1.text5.value*1;
var gam5=document.form1.text6.value*1;//создание переменных равных гамме
var res="";//результат
var mgam = [];//массив для гаммы
var text=document.form1.text1.value;//считывание введенного текста
mgam[0]=gam1;//создание массивов равных гамме
mgam[1]=gam2;
mgam[2]=gam3;
mgam[3]=gam4;
mgam[4]=gam5
for (i=0; i<text.length; i++){//цикл для введенного текста
var a =text.charCodeAt(i);//присваивание переменной символа с индексом введенного текста
var b =a-0x350;
var x = i%5;//берем нужную гамму
gam=mgam[x];//берем элемент массива
y=b^gam;//исключающеей или
res += String.fromCharCode(y + 0x350);//присваеваем переменной получившуюся строку
}
alert(res);//выводим результат
}
</script>
</head>
<body>
<form name="form1">
Текст:
<input name="text1" type="text" size="100" value=""><br>
Гамма:
<input name="text2" type="text" size="2" value="6">
<input name="text3" type="text" size="2" value="12">
<input name="text4" type="text" size="2" value="22">
<input name="text5" type="text" size="2" value="5">
<input name="text6" type="text" size="2" value="3"><br>
<input onclick="gammir()" type="button" value="Результат">
</form>
<!--ввод сообщения и гаммы -->
</body>
</html>