Показать сообщение отдельно
  #1 (permalink)  
Старый 25.11.2012, 19:18
Новичок на форуме
Отправить личное сообщение для Dinobot Посмотреть профиль Найти все сообщения от Dinobot
 
Регистрация: 25.11.2012
Сообщений: 2

Помощь в реализации шифра вертикальной перестановки
Здравствуйте.
Нужен совет.
Ситуация - реализовать шифр вертикальной перестановки. И , соответственно - обратный процесс - дешифровка.
Дошел до этого: загоняю текст в квадратную матрицу(соответственно,есл и кол-во символов не кратное, добавляю символ"_", чтобы привести к квадратной матрице.
Далее не могу реализовать:
1) ввод ключа. (для каждой размерности матрицы - свой ключ - это зависит т длины фразы, которую шифрую)
2) присваивание к каждому столбцу порядкового номера
3) вывод функции - считываются столбцы,согласно ключу.(если ключ 312, то выписываются символы сначала с 1 столбца, потом со 2го и т.д)-тут получаем зашифрованную фразу
4) обратный алгоритм.
В JS начинающий, буду рад любой помощи.
ВОт то,что сделано на данный момент:

<script type="text/javascript" >
function crypt(){
var string = prompt("enter string");
var lenStr = string.length; //длина строки
var lenMat = Math.ceil(Math.sqrt(lenStr)); // длина квадратной матрицы. Округляется в большую сторону до ближайшего целого
if (lenStr < Math.pow(lenMat, 2)) { // если длина строки меньше чем длина матрицы^2 то
while (string.length < Math.pow(lenMat, 2)) { //пока длина строки меньше матрицы^2
string = string + "_"; // прибавляем к строке знак "_"
} //итого длина строки становится квадратной - 4,9,16,25...
}
document.write("<table><tr>");
var arrNum = 0;
for(var i = 0; i < string.length; i++) {
if ((i+1)%lenMat != 0){
document.write("<td style='width:15px;text-align:center;font-size:18;'>" + string[i] + "</td>");
} else {
document.write("<td style='width:15px;text-align:center;font-size:18;'>" + string[i] + "</td></tr><tr>");
arrNum++;
}
}
document.write("</tr></table>")
}
</script>
Ответить с цитированием