Суть такова, разбиваю вводимый (64-байтный) текст на 8 блоков, записываю в определенной последовательности эти блоки(по столбцам) в матрицу, затем считываю из нее по определенной последовательности, но уже по строкам.
<html>
<head>
<title>Перестановка 8 на 8</title>
</head>
<body> <br>
<script language="JavaScript">
function polib() {
var a=new Array ( //Создание матрицы 8*8
new Array ('','','','','','','',''),
new Array ('','','','','','','',''),
new Array ('','','','','','','',''),
new Array ('','','','','','','',''),
new Array ('','','','','','','',''),
new Array ('','','','','','','',''),
new Array ('','','','','','','',''),
new Array ('','','','','','','','')
);
var f ="";
var simv="";
var str=0;
var stol=0;
var p=0;
var h=0;
var stol1="";
var stol2="";
var stol3="";
var stol4="";
var stol5="";
var stol6="";
var stol7="";
var stol8="";
var y=1;
var m=new String();
var n=new String();
var vvod = b_text1.value;
var vk =b_text1.value.toUpperCase();
/*for(i = 0; i < vvod.length; i++)
{
simv=vk.charAt(i);
stol1=vk.substring(0,7);
}*/
stol1=vk.substring(0,7); //Разбиение строки на 8 частей
stol2=vk.substring(8,15);
stol3=vk.substring(16,23);
stol4=vk.substring(24,31);
stol5=vk.substring(32,39);
stol6=vk.substring(40,47);
stol7=vk.substring(48,55);
stol8=vk.substring(56,63);
p=0;
for (i=0; i<8; i++) // запись по ключу: 6 4 2 1 3 5 7 8
{
simv=stol1.charAt(i);
a[p][6]=simv;
p+=1;
}
p=0;
for (i=8; i<16; i++)
{
simv=stol2.charAt(i);
a[p][4]=simv;
p+=1;
}
p=0;
for (i=16; i<24; i++)
{
simv=stol3.charAt(i);
a[p][2]=simv;
p+=1;
}
p=0;
for (i=24; i<32; i++)
{
simv=stol4.charAt(i);
a[p][1]=simv;
p+=1;
}
p=0;
for (i=32; i<40; i++)
{
simv=stol5.charAt(i);
a[p][3]=simv;
p+=1;
}
p=0;
for (i=40; i<48; i++)
{
simv=stol6.charAt(i);
a[p][5]=simv;
p+=1;
}
p=0;
for (i=48; i<56; i++)
{
simv=stol7.charAt(i);
a[p][7]=simv;
p+=1;
}
p=0;
for (i=56; i<64; i++)
{
simv=stol8.charAt(i);
a[p][8]=simv;
p+=1;
}
for (i=0; i<8; i++) f=f+a[8][i]; //считывание по ключу: 8 1 5 4 6 2 7 3
for (i=0; i<8; i++) f=f+a[1][i];
for (i=0; i<8; i++) f=f+a[5][i];
for (i=0; i<8; i++) f=f+a[4][i];
for (i=0; i<8; i++) f=f+a[6][i];
for (i=0; i<8; i++) f=f+a[2][i];
for (i=0; i<8; i++) f=f+a[7][i];
for (i=0; i<8; i++) f=f+a[3][i];
b_text2.value = f; }
</script>
<div align="center">
<b>Введите сюда Ваш текст:</b>
<br><br>
<input id="b_text1" type="text" size="80">
<br><br><br>
<b>Выберите действие:</b>
<br><br>
<input onclick="polib()" type="button" value="Дешифровать"><br>
<b>Результат:</b> <br><br>
<input id="b_text2" type="text" size="80"> </div>
</html>