Game Maker - создание игр | HellRoom Games
Май 13, 2025, 10:34:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: DCIP1 - шифрование данных  (Прочитано 3405 раз)
0 Пользователей и 1 Гость смотрят эту тему.
darkart
Новичок
*

Репутация: 1
Offline Offline

API: GameMaker 8.1 Standard
Сообщений: 10


« : Октябрь 24, 2016, 23:47:59 »

Написал простой алгоритм шифрования данных, назвал его (DCIP1 - Darkart Cipher). Суть крайне простая - с помощью ключа и некоторых операций (посмотрите в коде) получаем уникальное число M, после этого считываем два байта из файла1 и XORим их на M, после чего друг на друга, после этого выводим в файл2. Повторяем до конца файла. Дешифрование происходит таким же образом, только после нахождения числа М и считывания байтов мы сначала XORим их друг на друга, а потом на М.

DCIP1_C:
fn=argument0;
key=argument1;
m=0;s=string_length(key);
for(i=0;i<s;i+=1){m+=ord(string_char_at(key,i));}
m=round(m/s);
infile=file_bin_open(fn,0);
outfile=file_bin_open(fn+".dc1",1);
fs=file_bin_size(infile);
while(file_bin_position(infile)<fs-1){
    c=file_bin_read_byte(infile);
    b=file_bin_read_byte(infile);
    b^=m;b^=c;c^=m;c^=b;
    file_bin_write_byte(outfile,c);
    file_bin_write_byte(outfile,b);
}
file_bin_write_byte(outfile,file_bin_read_byte(infile));
file_bin_close(infile);
file_bin_close(outfile);

DCIP1_D:
fn=argument0;
fn2=argument1;
key=argument2;
m=0;s=string_length(key);
for(i=0;i<s;i+=1){m+=ord(string_char_at(key,i));}
m=round(m/s);
infile=file_bin_open(fn,0);
outfile=file_bin_open(fn2,1);
fs=file_bin_size(infile);
while(file_bin_position(infile)<fs-1){
    c=file_bin_read_byte(infile);
    b=file_bin_read_byte(infile);
    c^=b;c^=m;b^=c;b^=m;
    file_bin_write_byte(outfile,c);
    file_bin_write_byte(outfile,b);
}
file_bin_write_byte(outfile,file_bin_read_byte(infile));
file_bin_close(infile);
file_bin_close(outfile);
Записан
DmitryDS
Потому что я такой-сякой
GM Pro user
*

Репутация: 159
Offline Offline

Награды:
За лояльность! [+150 репутации]1000 сообщений!За постоянность! [100 дней на форуме]
API: GameMaker Studio Master
Сообщений: 1061



WWW
« Ответ #1 : Октябрь 25, 2016, 07:48:42 »

Шифр Вернама, который вы пытаетесь модифицировать, абсолютно криптостоек, коль скоро ключ не используют повторно. Единственно, можно поколдовать с ключом, чтобы попытаться повысить его "случайность". А если вы там ключ пытаетесь в шифре спрятать, то это очень плохая идея.
Напомнило:
Цитировать
Мы не просто разобьем шифр Вернама, который просто невозможно расшифровать. Мы пойдем на Большое Дело, истинно неразрушимый 128-битный шифр Вернама. Хотя не, это слишком просто. Чтобы все пошло как надо, мы расшифруем цельнонеразрушимый 512-битный шифр Вернама, который как минимум в 2^384 раз более неразрушим, чем обычный. Верните Холли!
Записан

Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.079 секунд. Запросов: 28.