Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2012, 19:31   #1
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию шифрование DES

реализую шифрование DES.
застрял на моменте:
получили 56 битовый ключ, разбили его на 28 битовых блока: C(0) - левый и D(0) - правый. Производится левый циклический сдвиг C(0) и D(0) на заданное таблицей число позиций.

поясните пожалуйста вот это: Производится левый циклический сдвиг C(0) и D(0) на заданное таблицей число позиций.



непонимаю как нужно сделать сдвиг.
допустим у нас ключ шифрования в бинарном виде и после начальной перестановки был таким: 00000000000000001111111111110110011 001111000100000001111

каким он должен стать?
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 26.04.2012, 20:07   #2
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

сделал: JavaScript
Код:
var kp_2 = new Array( 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32);
	var Shifts = new Array (1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1);

var permutationKey = PermutationKey(binKey,kp);
	
	var leftKey = permutationKey.substr(0,28);
	var rightKey = permutationKey.substr(28);
	for (var i=0; i<Shifts.length; i++) {
		leftKey = leftShift(leftKey,Shifts[i]);
		rightKey = leftShift(rightKey,Shifts[i]);
	}
	var keys = PermutationKey(leftKey+rightKey,kp_2);

function PermutationKey(key,matrix) {
	key = key.split('');
	var newArr = new Array();
	var PermutatedText = '';
	for (var i=0; i<matrix.length; i++) {
		PermutatedText += key[matrix[i]-1];
	}
	return PermutatedText;
}

function leftShift(key, count) {
	if (count == 1) {
		var temp = key[0];
		shiftKey = key.substr(1) + temp;
	}
	else {
		var temp = key[0]+key[1];
		shiftKey = key.substr(2) + temp;
	}
	return shiftKey;
}
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шифрование DES bpystep Помощь студентам 0 24.04.2012 19:03
разбор задания по шифрование DES tanek Помощь студентам 3 09.03.2012 23:56
DES Євгеній Бєлік Помощь студентам 1 01.11.2011 15:11
DES и RSA шифрование! korneplodik Помощь студентам 0 16.05.2011 10:56
DES Shamonya Общие вопросы Delphi 2 12.04.2011 18:08