![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| eNecro |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.2.2008 Репутация: нет Всего: нет |
Вот задание: имеется текстовый файл закодированный по следующему алгоритму
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:35 Присоединённый файл ( Кол-во скачиваний: 2 )
5.rar 0,13 Kb |
|||
|
||||
| eNecro |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.2.2008 Репутация: нет Всего: нет |
все таки действительно 3-я часть кодировки (здесь 1-й блок) не работает. В бинарном вычитании косяк.
но, что больше всего меня сегодня убило - не работает mod! например: (i=0) mod 256 = 0 (i=1) mod 256 = 1 (i=2) mod 256 = 2 Это понять я не в состоянии... |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
А как по-твоему должно было быть? -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| eNecro |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.2.2008 Репутация: нет Всего: нет |
а почему когда делимое меньше делителя, mod выдает делимое.
Например, 2 mod 5 даст два, почему это правильно с математической точки зрения? 2/5=0,4 - mod для подобных чисел вообще применим? |
|||
|
||||
| kogemrka |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 8.1.2010 Репутация: нет Всего: нет |
mod - операция получения остатка от деления
2 mod 5 = 2. Всё логично. Раздели 2 на пять. Результат деления - ноль. Остаток от деления: 2 |
|||
|
||||
| eNecro |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.2.2008 Репутация: нет Всего: нет |
блин, то ли в школе плохо учился, то ли что
буду знать, спасибо. алгоритм собрал, тему можно закрыть |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |