
Доброго дня.
В общем, собрал на JS шифр Цезаря. Для тех, кто не знает - это шифр, в котором символы в сообщении сдвигаются на количество букв. Сдвиг определяется числом, указанным пользователем.
Суть вопроса: сейчас в моей программе итоговое шифрованное сообщение выводится в специально-отведенном инпуте.
Мне нужно сделать, чтобы параллельно с этим в консоль выдавался список сразу всевозможных вариантов шифрования (сколько букв в алфавите, столько и строк с консоли). Так называемый взлом шифра.
На примере должно быть так:
Исходный текст - abc
Ключ - без разницы
Шифр - текст со сдвигом на n символов
И в консоли:
abc
bcd
cde
....
xwz
Думаю, суть понятна.
Сам код:
var alphabet = "abcdefghijklmnopqrstuvwxyz"; // алфавит
var fullAlphabet = alphabet + alphabet + alphabet;
function runCipher(){
var cipherText = $('#cypher').val();
var cipherOffset = $('#offset').val();
cipherOffset = (cipherOffset % alphabet.length);
var cipherFinish = '';
for(i=0; i<cipherText.length; i++){
var letter = cipherText[i]; // Символ шифруемой строки
var upper = (letter == letter.toUpperCase());
letter = letter.toLowerCase();
var index = alphabet.indexOf(letter);
if(index == -1){ // если индекст символа в строке 15 не найден, то в итоговую строку добавляется символ, как он и есть
cipherFinish += letter;
} else {
index = ((index + cipherOffset) + alphabet.length);
var nextLetter = fullAlphabet[index];
if(upper) nextLetter = nextLetter.toUpperCase();
cipherFinish += nextLetter;
}
function say_hi() {
var fname = document.getElementById('finish').value;
var html = fname;
document.getElementById('result').innerHTML = html;
}
}
$('#finish').val(cipherFinish);
}
$(document).ready(function() {
$('#cypher').keypress(function(){
setTimeout(function(){ runCipher(); },20);
});
$('#cypher').blur(function(){
runCipher();
});
$('#offset').change(function(){
setTimeout(runCipher(),20);
});
});


