| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > алгоритм дешифровки надо сделать |
| Автор: eNecro 2.2.2010, 20:16 | ||
| Вот задание: имеется текстовый файл закодированный по следующему алгоритму 1. Циклический сдвиг влево на два. (b = a << 2)* 2. Сумма с числом, образованным как остаток от деления номера позиции байта на 256. Номер позиции считается с нуля. (b = a + (i mod 256)) 3. Сумма младших 4-х разрядов ключа со старшими и младшими 4-я разрядами байта. Перенос из младшей части в старшую не осуществляется. (Hi(b) = Lo(k)+Hi(a), Lo(b) = Lo(k)+ Lo(a)) Ключик неизвестен, надо расшифровать этот файл путем выполнения вышеприведенных действий в обратном порядке. делаю так:
но нифига не работает. Грешу на третью часть кодировки. Не пойму, если перенос из младшей часть в старшую не осуществляется, тогда должна инфа потеряться в некоторых случаях. Как это учесть и обратно декодировать? еще по первой части, где сдвиг влево: в декодировке сделал сначала с сохранением младших битов, а они там нужны? Сомнения меня пробрали... Подскажите что неверно делаю... сам файлик в аттаче |
| Автор: eNecro 3.2.2010, 09:39 |
| все таки действительно 3-я часть кодировки (здесь 1-й блок) не работает. В бинарном вычитании косяк. но, что больше всего меня сегодня убило - не работает mod! например: (i=0) mod 256 = 0 (i=1) mod 256 = 1 (i=2) mod 256 = 2 Это понять я не в состоянии... |
| Автор: eNecro 3.2.2010, 10:43 |
| а почему когда делимое меньше делителя, mod выдает делимое. Например, 2 mod 5 даст два, почему это правильно с математической точки зрения? 2/5=0,4 - mod для подобных чисел вообще применим? |
| Автор: kogemrka 3.2.2010, 11:14 |
| mod - операция получения остатка от деления 2 mod 5 = 2. Всё логично. Раздели 2 на пять. Результат деления - ноль. Остаток от деления: 2 |
| Автор: eNecro 4.2.2010, 10:33 |
| блин, то ли в школе плохо учился, то ли что буду знать, спасибо. алгоритм собрал, тему можно закрыть |