Показать сообщение отдельно
  #3 (permalink)  
Старый 24.04.2012, 19:23
Интересующийся
Отправить личное сообщение для brizzzobot Посмотреть профиль Найти все сообщения от brizzzobot
 
Регистрация: 07.04.2012
Сообщений: 13

реализую алгоритм 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 и т.д.
Ответить с цитированием