реализую алгоритм DES
помогите написать перестановку по матрице
function Permutation(string,matrix) {
var PermutatedText = '';
var newArr = new Array();
for (var i=0; i<string.length; i++) {
newArr[i] = string[matrix[i]];
}
for (var i=0; i<newArr.length; i++) {
PermutatedText += newArr[i];
}
return PermutatedText;
}
var binText = new Array();
var permutationText = new Array();
var ip = new Array( 58, 50, 42, 34, 26, 18, 10, 2, 60, 52,
44, 36, 28, 20, 12, 4, 62, 54, 46, 38,
30, 22, 14, 6, 64, 56, 48, 40, 32, 24,
16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59,
51, 43, 35, 27, 19, 11, 3, 61, 53, 45,
37, 29, 21, 13, 5, 63, 55, 47, 39, 31,
23, 15, 7);
for (var i=0; i<text.length; i++) {
binText[i] = TextToBinary(text[i]); //переводим в bin
permutationText[i] = Permutation(binText[i],ip); //производим перестановку, по начальной матрице
}
newArr[i] = string[matrix[i]]; - вот здесь как то не так работает, проверял обычным перебором (
в уме xD)
справка: блок binText[i] преобразуется с помощью матрицы ip, т.е. бит с номером 58 блока binText[i] становится битом с номером 1, бит с номером 50 - битом с номером 2 и т.д.