Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Шифрование/дешифрование файлов


kash_d ©   (2007-09-15 12:05:00) 

Добрый день! проблема у меня такая: есть файл зашифрованый методом XOR известно что файл зашифрован по 4 байта и ключь тоже 4 байта. как мне читать файл кусками по 4 байта + это должно работать быстро? ну и моеж у кого есть соображения как остановить процесс перебора(в смысле проверить что ключь найден и текст расшифрован)
заранее спасибо!


Anatoly Podgoretsky   (2007-09-17 09:14:00) [1]

> kash_d  (17.09.2007 09:05:16)  [16]

Ты уверен?
Насколько хороши твои знания ассемблера, особенно в части оптимизации под процессор.


Сергей М.   (2007-09-17 09:11:00) [2]


> kash_d   (17.09.07 09:05) [16]
>
>


Ну замути)
Кто ж тебе мешает)


kash_d   (2007-09-17 09:05:00) [3]


> > может .. на асемблере туда вставить
>
>
> Это еще зачем ?
> И что ты собрался "вставлять" ?)

ассемблер для скорости! тот же XOR точно можно на ассемблере замутить, это приличный выйгрыш даст!


Сергей М.   (2007-09-16 12:56:00) [4]


> Anatoly Podgoretsky ©   (16.09.07 12:54) [14]


Да я и не настаиваю на MMF)


Anatoly Podgoretsky   (2007-09-16 12:54:00) [5]

> Сергей М.  (16.09.2007 12:52:13)  [13]

40 кб и MMF :-)


Сергей М.   (2007-09-16 12:52:00) [6]


> размер файла 40 кб


Мелочь, одним словом.


> можно поподробнее


Пляши от CreateMappedFile + MapViewOfFile


> может .. на асемблере туда вставить


Это еще зачем ?
И что ты собрался "вставлять" ?)


kash_d   (2007-09-16 12:47:00) [7]

размер файла 40 кб, можно поподробнее, что значит
> Открывай файл как MMF
??? и может кто чего предложит на асемблере туда вставить?


Сергей М.   (2007-09-16 11:30:00) [8]


> вся загвоздка в скорости


Открывай файл как MMF и работай с его содержимым как с обычным массивом, если конечно же размер файла позволит это.


kash_d   (2007-09-15 22:07:00) [9]

вся загвоздка в скорости!


kash_d   (2007-09-15 22:06:00) [10]

не с текстом то я примерно представляю что делать! конечно нужно  не весь текст брать и делать подобие экспертной системы, ну чтобы определить что это текст а не лабуда(ну типа после точки с большой буквы, слов не бывает очень больших ну и т.д.)


TUser   (2007-09-15 19:59:00) [11]

Читать надо не по 4 байта, а по 512. Так быстрее.


Инс   (2007-09-15 18:56:00) [12]


> гораздо проще но ве равно глазами

Если длина ключа известна, то делаем так: смещаем шифртекст на величину размера ключа (или кратную ей) и накладываем xor-ом на несмещенный шифртекст. В результате в полученной последовательности ключа уже не будет, он убьет сам себя в результате xor-а с самим собой. Последовательность будет представлять собой исходное сообщение xor оно же, только смещенное на величину ключа. Каждый байт этой последовательности будет представлять собой "буква xor буква". Это сильно упрощает дело, такая последовательность сильно избыточна. На 1 байт приходится примерно полтора бита полезной информации.


Anatoly Podgoretsky   (2007-09-15 17:51:00) [13]

> S@shka  (15.09.2007 17:48:05)  [5]

Не обязательно, надо писать ИИ.


S@shka   (2007-09-15 17:48:00) [14]


> Если это просто текст (а тем более состоящий только из английских
> символов) - то гораздо проще.


гораздо проще но ве равно глазами


Инс   (2007-09-15 15:42:00) [15]


> 4 миллиарда комбинаций и проверка глазами или ИИ

Если это просто текст (а тем более состоящий только из английских символов) - то гораздо проще.


Anatoly Podgoretsky   (2007-09-15 15:27:00) [16]


> А ты что знаешь хотя бы косок исходного текста? Чтобы хоть
> как то определить правильность ключа.

4 миллиарда комбинаций и проверка глазами или ИИ


S@shka   (2007-09-15 15:25:00) [17]

Что касается чтения...
var
Buf : Integer;
F : File of Inteter;
begin

 assignfile (F,'cripto.file');
 Reset (F);
 while not Eof (F) do
 begin
   read (F,Buf);
   ...
 end;

4 байта - это же Integer;  - поэтому можно так
или
Buf : array [1..4] of Char;
F : File of Char; // of Byte
 ...
Reset (F,4);
..
read (F,Buf[1]);


S@shka   (2007-09-15 15:20:00) [18]

А ты что знаешь хотя бы косок исходного текста? Чтобы хоть как то определить правильность ключа.


Наверх

Титульная страница Поиск, карта сайта Написать письмо